插入排序详解

目录

插入排序的别称

插入排序所适用的序列

插入排序的基本思想

插入排序所利用的技术

确认外层排序

确认内层排序


插入排序的别称

                                        插入排序一般也被称为直接插入排序

插入排序所适用的序列

                                        对于少量元素的排序,它是一个有效的算法

                                        对于大量元素的排序,则效率很低下

插入排序的基本思想

插入排序是一种最简单的排序算法,它的基本思想是将一个记录插入到已经排好序的有序表中

成为一个新的,记录数增一的有序表

插入排序所利用的技术

在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动

确认外层排序

当数据量小于等于一时,就默认为有序,因为就一个嘛,排来排去还是它,所以就可以看成是有序的,所以每一个序列有会有一个0号元素,我们就可以把它看成是有序的,根据插入排序的思想,我们就应该将0号元素(有序)后的元素(无序)变到有序的队伍中去,那么0号元素后面有多少个元素需要待插入的呢,假设有n个数据,那么除去有序的0号元素,无序的队伍就是n-1个,那么外层循环的次数也就确定了,即n-1个

所以外层排序也就出来了,需要插入的序列:1~n-1

#include<iostream>
#include<string>
using namespace std;
void insert_sort(int arr[], int size)//arr[]接收排序数组,size序列长度
{
	//外层循环
	for (int i; i <= size - 1; i++)
	{
	}
}

确认内层排序

外层循环确定了,那么我们就该确定内层循环了

假设我们正在进行的是升序排序 ,以序列12453为例,假设待插入的元素为3,也就是3需要和1245进行比较,因为是升序,所以3和5比较之后,3,5进行交换位置序列变为12435,在用3和124序列进行比较,总的来说就是无序的往有序中插入,经过不停的插入和交换,最终成为升序或者降序的序列

 根据以上思路,即可用代码将插入排序完整表示出来

#include<iostream>
#include<string>
using namespace std;
void insert_sort(int arr[], int size)//arr[]接收排序数组,size序列长度
{
	//外层循环
	for (int i; i <= size - 1; i++)	
	{
		//升序
		if (arr[j] > arr[j + 1])
		{
			int temp = arr[j];
			arr[j] = arr[j + 1];
			arr[j + 1] = temp;
		}
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翘指

创作不易,一分也是爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值