c++ 冒泡排序_C/C++基础之插入排序

本文详细介绍了插入排序的工作原理,并通过一个具体的例子展示了如何使用C++实现插入排序。插入排序类似于军训排队,将元素逐个插入到已排序的部分,通过与现有元素比较找到合适位置。代码实现中,对数组{50,26,74,60,12,1,100}

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前两篇跟大家讲了C/C++基础数组排序的选择排序和冒泡排序,现在再给大家分享一下插入排序算法:

插入排序

其实插入排序跟我们军训排队一样的,军训排队一般是按各人身高排的,个矮的站前面,个高的站后面:

6e34b9f5265a8385360266c923bb51f7.png

他的操作是:将一个数插入到其他已经有序的数组中适当的位置(按一定规则)比如排队,他就需要站在一个比他矮的人后面但是比他高的人前面的位置,然后为了给他挪出来一个位置,他后面的人是不是都应该要挪开一个位置呢?

还是假设我们有一个数组{50,26,74,60,12,1,100},我们要怎么做呢?

d55fa69f414b184f15e1153f7ec856d6.png

如上图,我首先取数组第一个(50)组成一个现有队列,然后逐一再从原始序列中取出数据插入到现有队列中适当位置,这样只需要(数组长度-1)次循环就可以完成工作。

我们看下代码怎么实现:

dffaff20042e93870e41b1e8024f7382.png

看下运行结果,确认下有没有问题:

65e8149cf35f7394b784ecac893edeb0.png

OK,没有问题。

其实插入排序的核心就是:将元素插入已有序列,逐一跟现有序列元素比较,然后满足比较条件的就换位置,知道找到自己合适的位置。

最后奉上源代码:

#include

#include

using namespace std;

int main()

{

int arr[7] = {50,26,74,60,12,1,100};

//從第二個元素開始去插入,所以從i=1開始

for (int i = 1; i < sizeof(arr)/sizeof(int); i++)

{

//这个循环就是我在图示中表示的过程,最大的从前往后滚

for (int j = i; j >0; j--)

{

if(arr[j]

{

int temp = arr[j];

arr[j] = arr[j-1];

arr[j-1] = temp ;

}

}

}

//我们来输出一下看看排序成功没

for (int i = 0; i < sizeof(arr)/sizeof(int); i++)

{

cout<

}

system("pause");

return 0 ;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值