1、插入排序

实现思路:

1.从数组的第二个数据开始往前比较,即一开始用第二个数和他前面的一个比较,如果 符合条件(比前面的大或者小,自定义),则让他们交换位置。

2.然后再用第三个数和第二个比较,符合则交换,但是此处还得继续往前比较,比如有 5个数8,15,20,45, 17,17比45小,需要交换,但是17也比20小,也要交换,当不需 要和15交换以后,说明也不需要和15前面的数据比较了,肯定不需要交换,因为前 面的数据都是有序的。

3.重复步骤二,一直到数据全都排完。

代码范例

 

#include <iostream>

void PrintValue(int *p_num, int num)
{
    for(int i = 0;i < num;++i)
    {
        std::cout << p_num[i] << " ";
    }
    std::cout << '\n'; // 输
}

void InsertSort(int *p_num, int num)
{
    PrintValue(p_num, num);
    for(int i = 1; i < num; ++i)    //从第1个元素开始循环,//一共需要循环 num-1 轮
    {
        int key = p_num[i];
        int j = i -1;
        while (j>=0&& p_num[j] > key)  //若元素大于插入元素
        {
            p_num[j+1] = p_num[j];    //元素向后移
            j--;
        }
        p_num[j+1] = key;
    }
    PrintValue(p_num, num);
}

int main() {
   
    int a[] = {9,3,6,1,0,2};

    InsertSort(a, 6);

    return 0;
}

 

posted @ 2021-01-13 13:11  zwj鹿港小镇  阅读(91)  评论(0编辑  收藏  举报