冒泡问题
package com.wang;
/**
* 演示冒泡降序排列
* @author
*
*/
public class TestMaopao {
public static void main(String[] args) {
int array [] = {88, 52, 9, 100, 98, 65};
// 冒泡排序
System.out.println("************************升序排列**************************");
for (int i = 0; i < array.length; i ++) {
for (int j = 0; j < array.length - 1 - i; j ++) {
// 升序排列
if (array [i] > array [i + 1]) {
int temp = array [i];
array [i] = array [i + 1];
array [i + 1] = temp;
}
}
}
// 排序后输出数组
for (int i = 0; i < array.length; i ++) {
System.out.print(array[i] + " ");
}
System.out.println();
System.out.println();
System.out.println("************************降序排列**************************");
for (int i = 0; i < array.length; i ++) {
for (int j = 0; j < array.length - 1 - i; j ++) {
// 降序排列
if (array [i] < array [i + 1]) {
int temp = array [i];
array [i] = array [i + 1];
array [i + 1] = temp;
}
}
}
// 排序后输出数组
for (int i = 0; i < array.length; i ++) {
System.out.print(array[i] + " ");
}
}
}
[解决办法]
for (int i = 0; i < array.length; ++i) {
for (int j = 0; j < array.length - i - 1; ++j) {
// 升序排列
if (array [j] > array [j + 1]) {
temp = array [j];
array [j] = array [j + 1];
array [j + 1] = temp;
}
}
}
[解决办法]
public static void main(String[] args) { int array [] = {88, 52, 9, 100, 98, 65}; // 冒泡排序 System.out.println("************************升序排列**************************"); for (int i = 0; i < array.length; ++i) { for (int j = 0; j < array.length - 1 - i; ++j) { // 升序排列 if (array [j] > array [j + 1]) { int temp = array [j];//循环里面的条件应该是判断J,而不是I,降序也是如此 array [j] = array [j + 1]; array [j + 1] = temp; } } } for (int i = 0; i < array.length; ++i) { System.out.print(array[i] + " "); } System.out.println(); System.out.println(); System.out.println("************************降序排列**************************"); for (int i = 0; i < array.length; i ++) { for (int j = 0; j < array.length - 1 - i; j ++) { // 降序排列 if (array [j] < array [j + 1]) { int temp = array [j]; array [j] = array [j + 1]; array [j + 1] = temp; } } } // 排序后输出数组 for (int i = 0; i < array.length; i ++) { System.out.print(array[i] + " "); } }
[解决办法]
public static void main(String[] args) { int array [] = {88, 52, 9, 100, 98, 65}; // 冒泡排序 System.out.println("************************升序排列**************************"); for (int i = 0; i < array.length; ++i) { for (int j = 0; j < array.length - 1 - i; ++j) { // 升序排列 if (array [j] > array [j + 1]) { int temp = array [j]; array [j] = array [j + 1]; array [j + 1] = temp; } } } for (int i = 0; i < array.length; ++i) { System.out.print(array[i] + " "); } System.out.println(); System.out.println(); System.out.println("************************降序排列**************************"); for (int i = 0; i < array.length; i ++) { for (int j = 0; j < array.length - 1 - i; j ++) { // 降序排列 if (array [j] < array [j + 1]) { int temp = array [j]; array [j] = array [j + 1]; array [j + 1] = temp; } } } // 排序后输出数组 for (int i = 0; i < array.length; i ++) { System.out.print(array[i] + " "); } }
[解决办法]
其实升序和降序在代码上的唯一区别就是在第二层循环里面的判断方向不一样,其他都是一样的。
伪代码帮助记忆:
for (int i = 0; i < 数组长度; i ++) { for (int j = 0; j < 数组长度 - 1 - i; j ++) { if (array [j] [color=#008000]< [/color]array [j + 1]) {//把小的往后面移动 -> 降序 //if (array [j] [color=#FF0000]>[/color] array [j + 1]) {//把大的往后面移动 -> 升序 交换元素j和j+1 } } }