您的位置:首页 > 其它

排序-直接插入排序

2016-04-02 17:49 225 查看
插入排序

插入排序相比直接选择排序,效率更高些。

插入排序有下面几个步骤:

1.找到要交换的元素,将该元素赋值给哨兵

2.从相应的位置移动元素,取决于你的比较方法,大于还是小于,最后移动的结果是空出一个位置留给哨兵元素

3.将哨兵元素放到第二步空出的位置中

4.继续循环上面饿步骤知道全部排序完成

代码:

//普通数组的插入排序,从小到大排序
void InsertSort(int* L, int length)
{
int temp = 0;//哨兵
for (int i = 1; i < length; i++)
{
if (L[i] < L[i - 1])
{
temp = L[i];//要交换的值赋值给哨兵
for (int j = i - 1; L[j] > temp; j--)
{
L[j + 1] = L[j];//元素依次后移
}
L[j + 1] = temp;//将哨兵放到要插入的位置
}
}
}


main测试

#include <stdio.h>
int main(void)
{
int x[10] = { 5, 3, 2, 1, 7, 4, 6, 9, 8, 10 };
InsertSort(x, 10);
for (int i = 0; i < 10; i++)
{
printf("%d ", x[i]);
}
system("pause");
return 0;
}


全部原创,欢迎指正
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: