一、定义
插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2),是稳定的排序方法。
二、思路
1.从第一个元素开始,该元素可以认为已经被排序。
2.取出下一个元素,在已经排序的元素序列中从后向前扫描。
3. 如果该元素(已排序)大于新元素,将该元素移到下一位置。
4.重复步骤3,直到找到已排序的元素小于或者等于新元素的位置。
5.将新元素插入到下一位置中。
6.重复步骤2~5,元素将会从小到大排序。
三、实现
public static void arraySort(int length){
// random一个长度为length的随机数组
int[] arrayInt = new int[length];
for(int i=0; i<arrayInt.length; i++){
Random rd = new Random();
arrayInt[i] = rd.nextInt(100);
}
int k, j, a;
// 第一元素是排序好的,然后从第二个开始和排序好的对比
for(k=1; k<arrayInt.length; k++){
a = arrayInt[k];
j = k;
// 将抽出来的元素和排序好的元素一一对比,至到遇到小于自己元素或者已是最左边元素
while(j>0 && a>arrayInt[j-1]){
arrayInt[j] = arrayInt[j-1];
j--;
}
arrayInt[j] = a;
}
}