1.冒泡排序
每次比较相邻的两个元素大小,调整顺序。从头到尾执行一轮(i),最大数值的元素就排到最后。每次从头到尾执行一轮,都会排好一个元素(length - i - 1)。这就是说一个包含 n 个元素的数组,最大需要 n - 1 次就可以完成数组排序。代码如下:
1 public static void bubbleSort(int[] array) { 2 int length = array.length; 3 for (int i = 0; i < length - 1; i++) { 4 for (int j = 0; j < length - i - 1; j++) { 5 if (array[j] > array[j + 1]) { 6 array[j] ^= array[j + 1]; 7 array[j + 1] ^= array[j]; 8 array[j] ^= array[j + 1]; 9 } 10 } 11 12 System.out.print("排序次数 - " + (i+1) + "次:"); 13 printArray(array); 14 } 15 }
测试的方法要是选择极端情况(已经排好序,只不过是个相反的)。那么就结结实实执行 n-1 轮比较。但是往往不是每次都如此极端,排序时就会有几轮是空转的。这时可以使用一个开关对上边的冒泡排序进行优化。
2.快速排序
3.选择排序
4.插入排序
5.归并排序