如何理解插入排序呢,插入一次是如何体现的呢?想象一下,此时的你正在打扑克牌,手中已经捋好排(3,5,6),然后从桌子上抓一张牌(4),此时的你是怎样把这个牌插入到已经排好序的牌当中呢。。。。一般人的做法:从前到后或者从后往前搜索,找到比前面大或者比后面小的位置,将牌插入(3,4,5,6)。
其实抓牌捋牌的过程就是典型的直接插入排序,每次将一个新数据插入到有序队列中的合适位置里。
利用代码来实现吧,依旧采用Java(只写函数)
public int[] InsertSort(int [] array){
int Prerindex;
int current;
for(int i=1;i<array.length;i++){//把数组的第一个数当成是有序的序列
Previndex=i-1;//以排好序的最后一个数开始向前搜索
current=array[i]
while(Previndex>=0 && array[Previndex]>current ){
array[Previndex+1]=array[Previndex];
Previndex--;
}
array[Previndex+1]=current;//注意此处+1的变化,仔细想想为什么+1?
}
return array;
}