发布网友 发布时间:2022-04-25 12:50
共1个回答
热心网友 时间:2022-04-27 00:18
插入排序算法: C版本的分析如下:
//直接插入排序:从小到大排;
//算法说明: 比如说现在排序进行到第 i位了,那么1 到 i-1位都已经为有序序列了;然后将 r[0]和r[j]依次比较,若是r[j]>r[0],那么就依次用前边数据覆盖后边数据,不必担心r[i]会丢掉,因为它被保存在了r[0]中,直到找到满足r[i]<r[j]的位置,将r[0]数据写入r[j]处,一次循环结束,进入下次循环;
void insSort( int r[],int length) //传数组,和数组大小;
{
// 数组下标从1 开始, 0号位为监视哨;
int i=0,j=0;
for(i=2;i<=length;++i)
{
r[0]=r[i]; //总是用r[0]记录当前数据;
j=i-1;
while(r[0]<r[j]) //寻找合适的位置;
{
r[j+1]=r[j]; //依次迭代覆盖;
j=j-1;
}
r[j+1]=r[0]; //晕,终于找到满足条件的地方了,赶紧钻入;
}
}
大功告成! 希望能帮上你。。。