冒泡排序
所谓的冒泡排序,可以这样子来理解:
两两对比,根据大小判定是否变换位置,如此循环往复。
定义一个整型数组array
如下
int[] array = {5, 8, 7, 6, 1, 4}
那么数组打印出来的结果就量:5 8 7 6 1 4。
假定我们需要进行升序排序,那么根据冒泡排序算法,它的排序过程是怎样的呢?
排序前:5 8 7 6 1 4
// 5 < 8
第1次:5 8 7 6 1 4
// 8 > 7
第2次:5 7 8 6 1 4
// 8 > 6
第3次:5 7 6 8 1 4
// 8 > 1
第4次:5 7 6 1 8 4
// 8 > 4
第5次:5 7 6 1 4 8
// 5 < 7
第6次:5 7 6 1 4 8
// 7 > 6
第7次:5 6 7 1 4 8
// 7 > 1
第8次:5 6 1 7 4 8
// 7 > 4
第9次:5 6 1 4 7 8
// 5 < 6
第10次:5 6 1 4 7 8
// 6 > 1
第11次:5 1 6 4 7 8
// 5 > 4
第12次:5 1 4 6 7 8
// 5 > 1
第13次:1 5 4 6 7 8
// 5 > 4
第14次:1 4 5 6 7 8
// 1 < 4
第15次:1 4 5 6 7 8
所以,综上所述,可得算法如下:
public class TestSort1 {
public static void main(String[] args) {
TestSort1 testSort1 = new TestSort1();
int[] array = {5, 8, 7, 6, 1, 4};
System.out.println("排序前:");
testSort1.printArray(array);
System.out.println("排序后:");
testSort1.sortMethod1(array);
testSort1.printArray(array);
}
/**
* 打印数组
* @param array 需要打印的数组
*/
public void printArray(int[] array) {
for (int i: array) {
System.out.print(i + " ");
}
System.out.println();
}
/**
* 冒泡排序算法
* @param array 需要排序的数组
*/
public void sortMethod1(int[] array) {
// 中间变量
int temp = 0;
for (int i=0; i<array.length-1; i++) {
for (int j=0; j<array.length-1-i; j++) {
// 元素大小判定
if (array[j] > array[j+1]) {
// 位置调换
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
}
}