直接插入排序

基本思想:

每趟将一条待排序的记录,按其关键字值得大小插入到前面已经排好序的记录序列中的适当位置,直到全部记录插入完成为止。

主要步骤:

1将r[i]暂存在临时变量temp中,2将temp与r[j](j=i-1,i-2....,0)比较,若temp<r[j],则将r[j]后移一个位置,3将temp插入到第j+1个位置上;

4令i=1,2,3....,n-1,重复上述步骤1~3

算法实现:

public void insertSort(){
RecordNode temp;
int i,j;
for(i=1;i<this.curlen;i++){
temp=r[i];
for(j=i-1;j>=0&&temp.getKey().compareTo(r[j].getKey())<0;j--){
r[j+1]=r[j];
}
r[j+1]=temp;
}
}//不带监视哨的直接插入排序
public void insertSortwithGuard(){
int i,j;
for(i=1;i<this.curlen;i++){
r[0]=r[i];
for(j=i-1;r[0].getKey().compareTo(r[j].getKey())<0;j--){
r[j+1]=r[j];
}
r[j+1]=r[0];
}
}//带监视哨的直接插入排序算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值