【算法竞赛宝典】插入排序

【算法竞赛宝典】插入排序

题目描述

在这里插入图片描述

伪代码

在这里插入图片描述

代码展示

//插入排序数,请自己根据例程修改 
#include <iostream>

using namespace std;

int main() {
    int a[11] = {1, 4, 6, 9, 13, 16, 19, 28, 40, 100};
    int temp1, temp2, number, end, i, j;
    cin >> number;
    if (number > a[9])
        a[10] = number;
    else {
        for (i = 0; i < 10; i++)//从左往右扫描
        {
            if (a[i] > number)//找到比插入数大的数时
            {
                temp1 = a[i];//将该数先暂存到temp1
                a[i] = number;//把插入数插入
                for (j = i + 1; j < 11; j++)//后面的数依次后移
                {
                    temp2 = a[j];//后移时,先将a[j]的值暂存到temp2
                    a[j] = temp1;//插入数
                    temp1 = temp2;//temp2的值存到temp1,继续下一次的插入
                }
                break;
            }
        }
    }
    for (i = 0; i < 11; i++)
        cout << a[i] << ' ';
    return 0;
}           

代码讲解

这段代码实现了插入排序算法,将一个数字插入已排序的数组中并保持数组的有序性。以下是代码的关键思路和步骤:

  1. 首先,定义一个已排序的数组 a,其中包含了初始的已排序元素。

  2. 从标准输入中读取一个新的数字 number,这是要插入到已排序数组中的数字。

  3. 首先,检查 number 是否大于已排序数组中的最大值 a[9]。如果 number 大于最大值,则直接将其放在数组的最后一位 a[10],因为它比已排序数组中的所有元素都大,不需要进行进一步的比较。

  4. 如果 number 不大于最大值,则需要找到适当的位置将其插入已排序数组中。这通过以下方式实现:

    • 使用一个循环遍历已排序数组 a,从左向右扫描。
    • 当找到一个比 number 大的元素 a[i] 时,将 a[i] 暂存到 temp1
    • number 放入 a[i] 的位置,然后开始后面的数依次后移,以为插入 number 腾出位置。
    • 在插入 number 后,循环结束。
  5. 最后,输出排序后的数组 a,包括新插入的元素。

这段代码会确保插入 number 后的数组仍然保持有序,并将结果输出到标准输出。这是插入排序算法的基本思路,它在已排序数据上的插入操作是其关键特点。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值