排序算法主要分为两大类java
排序算法的稳定性定义:
若是序列中有a=b,排序前a在b以前,排序后a还在b以前,则称这种排序算法是稳定的。算法
上例告诉咱们,算法是由具体的人来写的,写的垃圾,稳定算法也能写的不稳定
重复地走访过要排序的元素,依次比较相邻两个元素,若是他们的顺序错误就把他们调换过来,直到没有元素再须要交换,排序完成。这个算法的名字由来是由于越小(或越大)的元素会经由交换慢慢“浮”到数列的顶端。数组
给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法性能
对于数组 [3, 2, 1, 4, 5], 排序后为:[1, 2, 3, 4, 5]spa
无需分析3d
fun sortInteger(a : IntArray) { val len = a.size - 1 var alreadyNum = 0 var sortFinish = false while (alreadyNum <= len - 1 && !sortFinish) { var perSortFinish = true for (i in 1..(len - alreadyNum)) { if (a[i-1] > a[i]) { val temp = a[i-1] a[i-1] = a[i] a[i] = temp perSortFinish = false } } sortFinish = perSortFinish alreadyNum += 1 } }
public void sortIntegers(int[] A) { int len = A.length - 1; int alreadyNum = 0; boolean sortFinish = false; while (alreadyNum <= len - 1 && !sortFinish) { boolean perSortFinish = true; for (int i=1; i <= len-alreadyNum; i++) { if (A[i-1] > A[i]) { int temp = A[i-1]; A[i-1] = A[i]; A[i] = temp; perSortFinish = false; } } sortFinish = perSortFinish; alreadyNum += 1; } }
经过一趟排序将要排序的数据分割成独立的两部分,其中一部分的全部数据都比另一部分的全部数据都要小,而后再按此方法对这两部分数据分别进行快速排序,整个排序过程能够递归进行,以此达到整个数据变成有序序列。code
直接沿用上一题的实例,为便于阅读,将该例子再写一遍blog
给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法排序
对于数组 [3, 2, 1, 4, 5], 排序后为:[1, 2, 3, 4, 5]递归
无需分析