前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >插入排序

插入排序

作者头像
花狗Fdog
发布2022-06-17 09:22:25
2320
发布2022-06-17 09:22:25
举报
文章被收录于专栏:花狗在Qt花狗在Qt
在这里插入图片描述
在这里插入图片描述

插入排序

百度百科上面有一个不错的例子是这样描述插入排序的,插入排序的工作方式像许多人排序一手扑克牌。开始时,我们的左手为空并且桌子上的牌面向下。然后,我们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较。这样,拿在左手上的牌总是排序好的。

用一个动态图演示插入排序过程:

在这里插入图片描述
在这里插入图片描述

首先把数组第一个元素a[0]看作是一个有序数列,然后a[1]开始与a[0]做比较,发现10比7大,那么a[1]的值需要插入在a[0]的前面,表示下来就是a[0]的值往后移到a[1],然后a[1]的值移向a[0],然后再拿a[2]与之前的有序数列a[0],a[1]做比较,发现12大于10和7,那么原来的a[0]的值和a[1]的值,继续向右移动一个单位,把a[2]的值插入a[0],如此,a[0],a[1],a[2]就是一个有序数列,如此往复,直到之后排序完成。


插入排序原理

1、将待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列;

2、取出下一个元素,在已经排序的元素序列中从后向前扫描;

3、如果该元素(已排序)大于新元素,将该元素移到下一位置;

4、重复步骤3,直到找到已排序的元素小于或者等于新元素的位置;

5、将新元素插入到该位置后;

6、重复步骤2~5。


代码

代码语言:javascript
复制
	int arr[] = { 1,5,69,8,10 };
	int j;
	for (int i = 1; i < 5; i++)
	{
		int temp = arr[i];
		for (j = i - 1;j >= 0 && arr[j] < temp;j--)
		{
			arr[j + 1] = arr[j];
		}
		 arr[j+1]= temp;
	}

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-02-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 插入排序
  • 插入排序原理
  • 代码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档