插入排序:
public static int[] insertionSort(int[] array){ if (array.length == 0) return array; int current; for(int i =0;i<array.length-1;i++){ current = array[i+1]; int preindex = i; while(preindex >= 0 && array[preindex] > current){ array[preindex +1] = array[preindex]; preindex--; } array[preindex+1] = current; } return array; }
首先还是给你一个动漫图,这样你也容易理解:
其实从图中你可以感受到插入排序是一个比较简单的排序,没有过多的复杂步骤。它排序的基本原理也非常的简单,对于没有排序的元素,在已排序的元素中从后往前依次扫描,找到合适的位置插入。
其实和人们整理桥牌的方法一样,一张一张的来,将每张牌插入到其他已经有序的牌中的适当位置。
具体的步骤:
步骤1: 从第一个元素开始,该元素可以认为已经被排序;
步骤2: 取出下一个元素,在已经排序的元素序列中从后向前扫描;
步骤3: 如果该元素(已排序)大于新元素,将该元素移到下一位置;
步骤4: 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;
步骤5: 将新元素插入到该位置后;
步骤6: 重复步骤2~5。