算法之排序算法:插入排序(C++)

4 篇文章 0 订阅
1 篇文章 0 订阅

算法原理
设存在一个一维数组 array[n], 第 i 趟排序是将数组中下标为 i的元素插入到一个已经按值有序排列的子序列的合适位置。
(1)插入排序开始时, 第一个元素看成有序序列,从下标为 i = 1 的第二个元素开始,每一趟排序都将下标为 i 的元素插入到之前的有序序列中,然后 i = i + 1 进行下一个元素的插入排序,由此可见插入排序需要 n - 1 趟排序
(2)每次寻找插入元素 array[i] 的位置时是从有序序列的最后一个元素 array[i-1] 开始查找,直到找到某一位置的元素 array[j] (j >= 0 && j <= i-1)满足 array[j] <= array[i], 那么下标为
j + 1 的位置就应该是插入元素 array[i]的合适位置。从有序序列的最后一个元素开始查找,边查找边移动元素,而不是先找到插入位置再移动元素,这样提高了效率。
(3)将array数组中下标 [j + 1, i - 1]的所有元素依次后移一位,空出 array[j+1]的位置。
(4) 将array[i] 元素赋值给 array[j+1], 至此完成插入排序的一趟排序。

#include<iostream>
using namespace std;

#define MaxSize 1000

void InsertSort(int array[], int m);

int main()
{
    int number;
    int array[MaxSize];//
    //
    cout << "请输入需要排序的数据数:";
    cin >> number;
    cout << "请输入需要排序的数据:";
    for (int i = 0; i < number; i++)
    {
        cin >> array[i];
    }

    //对array数组通过插入算法实现升序排序
    InsertSort(array,number);

    //输出排序后的数组array
    cout << "排序后的数据为:";
    for (int i = 0; i < number; i++)
    {
        cout << array[i]<< " ";
    }
    cout << endl;
}


void InsertSort(int array[],int m)
{
    for (int i = 1; i < m; i++)
    {
        int j = i - 1;
        int temp = array[i];
        while (temp<array[j] && j>=0)
        {
            array[j+1] = array[j];
            j--;
        }
        array[j+1] = temp;
    }
}

结果图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值