c语言排序算法_C语言实践|插入排序算法

37b821ad62c927e8e7e4dc9bbeeb001e.png

例题:

在一个一排好序(由小到大)的数组中查找待插入数据x应插入的位置,使其插入后,数组元素仍然保持由小到大的顺序。

问题分析:插入是数组的基本操作之一。实现数组元素的插入排序的的关键在于:找到实际应该插入的位置,然后依次移动插入位置及其后面的所有元素,腾出位置放入待插入的元素。

算法的描述:

step 1 输入插入前已排好序的数组元素

step 2 输入待插入的元素x

step 3 插入元素x到已排序数组中

step 3.1查找定位,确定元素x应插入的数组下标位置pos

step 3.2 将插入位置pos及其后面的所有元素后移一个位置,以便腾出位置pos

step 3.3 插入元素x到位置pos

step 4 输出插入x后的数组元素

插入排序算法如下图

78ef8a36ba71ca02734f220c51fa5367.png

插入排序法示意图

先用数组名作为函数参数,编写的程序如下:

#include

#define N 11//能确保插入数据后数组不能越界的数组最大元素个数

void Insert(int a[],int n,int x);//函数声明

int main()

{

int a[N],x,i,n;

printf("请输入插入元素前的数组元素个数n(n<=10):");

scanf("%d

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值