您的位置:首页 > 编程语言 > C语言/C++

直接插入排序法(C语言实现)

2018-03-19 15:36 232 查看
插入法排序:
通过数据移动,留出合适位置插入顺序合适的值,而无须数据交换
步骤:
从第二个元素“i”开始缓存准备用于比较,并留出一个空位将空位前的元素“j”拿来与缓存值比较不满足则移动,直到向前找到头比较的目的是要让缓存值插入后成为从开头到插入点这个区间中的最值如果缓存值向前看不是最值,则往后移动,直到可以让缓存值插入后成为最值时停止将缓存值插入到最值位置(即内循环下一个将要移动的位置)。

demo:

//从小到大进行排序
insertsort(int *k,int n)             /*直接插入排序*/
{
int i,j;
int temp;
for(i=1;i<n;i++)
{
temp = k[i];                //将要比较的值先绶存起来留出一个空位,方便移动
j = i - 1;
while(j>=0 && k[j]>temp)    //比较直到出现比temp大的值,或向前找到头
{
k[j+1] = k[j];            //将前面的值往后移
j--;
}
k[j+1] = temp;                 //插在a[j]的后面
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: