参考文章:https://mp.weixin.qq.com/s/VjqZNPg6dAEReAzqZcb_yw
原文链接:www.jianshu.com/p/5e171281a387
5.冒泡排序 —— 一般不用。
-
将序列中所有元素两两比较,将最大的放在最后面。
-
将剩余序列中所有元素两两比较,将最大的放在最后面。
-
重复第二步,直到只剩下一个数。
如何写成代码:
-
设置循环次数。
-
设置开始比较的位数,和结束的位数。
-
两两比较,将最小的放到前面去。
-
重复2、3步,直到循环次数完毕。
public void bubbleSort(int[] a){ int length=a.length; int temp; for(int i=0;i<a.length;i++){ for(int j=0;j<a.length-i-1;j++){ if(a[j]>a[j+1]){ temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } }
6.快速排序 —— 要求时间最快时。
-
选择第一个数为p,小于p的数放在左边,大于p的数放在右边。
-
递归的将p左边和右边的数都按照第一步进行,直到不能递归。
public static void quickSort(int[] numbers, int start, int end) { if (start < end) { int base = numbers[start]; // 选定的基准值(第一个数值作为基准值) int temp; // 记录临时中间值 int i = start, j = end; do { while ((numbers[i] < base) && (i < end)) i++; while ((numbers[j] > base) && (j > start)) j--; if (i <= j) { temp = numbers[i]; numbers[i] = numbers[j]; numbers[j] = temp; i++; j--; } } while (i <= j); if (start < j) quickSort(numbers, start, j); if (end > i) quickSort(numbers, i, end); } }