182,376
社区成员
发帖
与我相关
我的任务
分享折半排序算法
public void BinInsertSort() //对R[0..n-1]按递增有序进行折半插入排序
{ int low,high,mid;
RecType tmp;
for (int i=1;i<n;i++)
{ if (R[i].key<R[i-1].key) //反序时
{ tmp=R[i]; //将R[i]保存到tmp中
low=0;high=i-1;
while (low<=high) //在R[low..high]中折半查找插入位置
{ mid=(low+high)/2; //取中间位置
if (tmp.key<R[mid].key)
high=mid-1; //插入点在左区间
else
low=mid+1; //插入点在右区间
}
for (int j=i-1;j>=high+1;j--) //元素集中后移
R[j+1]=R[j];
R[high+1]=tmp; //插入原来的R[i]
}
}
}
粘到昨天写的类里边去,创建测试类来调试...
今天摸鱼了,因为很累......