前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >排序技术:插入排序(C++实现)

排序技术:插入排序(C++实现)

作者头像
英雄爱吃土豆片
发布2020-11-12 10:42:55
6800
发布2020-11-12 10:42:55
举报

详情见代码注释。

代码语言:javascript
复制
#include <iostream>

using namespace std;

void insertSort(int arr[], int length) {
	//传入的数组的第一个位置为哨岗
	
	for (int i = 2; i < length; i++) {
		//对数组中的每一个元素进行插入排序
		//因为数组中第一个元素即是最大值,也是最小值
		//不需要进行任何判断和操作,循环从 2 开始 
		
		arr[0] = arr[i];//哨兵设置为当前进行插入的元素
		
		int j = i;//从尾部开始比较。i 为已经插入元素的后一位
				  //即为当前进行插入的元素在数组中的位置
				  //哨兵已经记录下了这个元素,此时相当于一个空位

		//此时进行插入的元素的值小于已经插入的最后元素时才会进入循环
		//否则代表不用进行插入排序,因为这个元素放在这个位置刚刚好 
		while (arr[j - 1] > arr[0]) {
		//倒序与已经插入的元素依次进行比较(每次与前一个元素比较) 
		//若比较到的元素大于哨兵(此时插入的元素),将这个元素后移
		//若比较到的元素小于或等于哨兵,插入位置找到,退出循环 
			arr[j] = arr[j - 1];
			j--;
		} 
		arr[j] = arr[0];//将本次进行插入的元素插入找到的位置
	}
}

int main() {
	int n;
	
	cin >> n;//指定数组的长度 
	
	//声明一个长度为 n + 1 的数组(数组第一个位置为哨岗) 
	const int LEN = n + 1;
	int a[LEN];
	
	for (int i = 1; i < LEN; i++) {
		//从键盘输入指定数量的数组元素 
		cin >> a[i];
	} 
	
	insertSort(a, LEN);//对数组进行排序 
	
	for (int i = 1; i < LEN; i++) {
		cout << a[i] << ' ';
	}
	
	return 0;
} 

运行效果:

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-11-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档