冒泡排序算法原理:
将序列依次进行比较,如果前面的数大于后面的,则交换位置。每一轮比较完之后,都能将里面最大的数找出来。
举例:
9 4 5 3 2
第一轮比较:9 4 5 3 2,这5个数
9和4比较,9 > 4,交换位置:4 9 5 3 2
9和5比较,9 > 5,交换位置:4 5 9 3 2
9和3比较,9 > 3,交换位置:4 5 3 9 2
9和2比较,9 > 2,交换位置:4 5 3 2 9
第二轮比较:4 5 3 2,这4个数
4和5比较,5 > 4,不用交换:4 5 3 2
5和3比较,5 > 3,交换位置:4 3 5 2
5和2比较,5 > 2,交换位置:4 3 2 5
第三轮比较:4 3 2,这3个数
4和3比较,4 > 3,交换位置:3 4 2
4和2比较,4 > 2,交换位置:3 2 4
第四轮比较:3 2,这2个数
3和2比较,3 > 2,交换位置:2 3
Java代码实现:
public class BubbleSort {
public static void main(String[] args) {
int[] array = {9, 5, 7, 2, 8, 1, 4};
for (int i = 0; i < array.length - 1; i++) {//外层循环,比较次数
// for (int j = 0; j < array.length - 1 - i; j++) {
// int temp;
// if (array[j] > array[j + 1]) {
// temp = array[j];
// array[j] = array[j + 1];
// array[j + 1] = temp;
// }
// }
//
// }
//方法二:
for (int i = array.length - 1; i > 0; i--) {
for (int j = 0; j < i; j++) {
int temp;
if (array[j] > array[j + 1]) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
}
}
}