插入排序
插入排序:
算法思想:
是将一个记录插入到已经排好序的有序表中。
设一个待排序列为s={r1,r2,r3……,ri,……,rn}
初始:
有序子序列{r1} 无序子序列{r2,……,rn}依次将r2……rn插入到前面的有序序列中,并使插入后仍然有序,直到插入完成得到一个有序序列。
核心算法实现:
//排非递减序
struct sqList{
int length;
int r[max+1];//r[0]闲置不用
};
void insertSort(sqList &L){
for(int i=2;i<=L.length;i++){
if(L.r[i-1]>L.r[i]){
L.r[0]=L.r[i];
L.r[i]=L.r[i-1];
for(int j=i-2;L.r[0]<L.r[j];j--){//从后往前找,从最后一个的前一个开始比较
L.r[j+1]=L.r[j];//往后移动一位
}
L.r[j+1]=L.r[0];
}
}