排序-直接插入排序

来源:互联网 发布:华军软件下载中心 编辑:程序博客网 时间:2024/06/11 05:17

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

插入排序有下面几个步骤:
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;}

全部原创,欢迎指正

0 0