Posted on 2006-06-13 21:17
Enjoy Life 阅读(357)
评论(0) 编辑 收藏 引用 所属分类:
DS study
void InsertionSort(Elem R[], int n){
//对记录序列R[1...n]做直接插入排序
for(i=2; i<=n; ++i){//一个数肯定是有序的
//后一个数比前一个数小才需要进行插入,否则不用移动数字就可以
if(R[i].key < R[i-1].key){
R[0] = R[i]; //哨兵
//找到R[i]该插入的位置,同时把R[i]大的数字都往后移一位,留出一个位置用于放R[i],该循环完成之后,位置找到,并且,后移也随之完成
for(j=i-1; R[0].key<R[j].key; --j)
R[j+1]=R[j];
//再空的位置放上R[0]
R[j+1]=R[0];
}
}
}