排序算法--插入排序

实现逻辑

① 从第一个元素开始,该元素可以认为已经被排序

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

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

④ 重复步骤③,直到找到已排序的元素小于或者等于新元素的位置

⑤将新元素插入到该位置后

⑥ 重复步骤②~⑤

cpp 复制代码
void print_array(int a[], int n){
	for (int i = 0; i < n; ++i){
		cout << a[i] << " ";
	}
	cout << endl;
}

void insertSort(int arr[], int nSize){
	for (int i = 1; i < nSize; ++i){
		int value = arr[i];
		int ipos = i;
		while(ipos >= 1 && arr[ipos - 1] < value){
			arr[ipos] = arr[ipos - 1];
			ipos--;
		}
		arr[ipos] = value;
	}
}

int main(){
	int arr[] = {10, 8, 11, 7, 4, 12, 9, 6, 5, 3};
	int len = sizeof(arr)/sizeof(arr[0]);
	
	cout << "排序前:";
	print_array(arr, len);

	insertSort(arr, len);
	
	cout << "排序后:";
	print_array(arr, len);
	return 0;
}

输出结果:

相关推荐
草莓熊Lotso1 分钟前
MySQL 索引特性与性能优化全解
android·运维·数据库·c++·mysql·性能优化
时光之源5 分钟前
记录:在VSCode中运行C/C++程序
c语言·c++·vscode
小樱花的樱花8 分钟前
C++访问权限:封装的艺术
开发语言·c++
liuyao_xianhui21 分钟前
优选算法_岛屿数量_floodfill算法)_bfs_C++
java·开发语言·数据结构·c++·算法·链表·宽度优先
落羽的落羽22 分钟前
【Linux系统】入门线程:线程介绍与线程控制
linux·服务器·c++·人工智能·stm32·单片机·机器学习
深邃-33 分钟前
字符函数和字符串函数(2)
c语言·数据结构·c++·后端·算法·restful
bekote36 分钟前
PTA基础编程题目集-6-11 求自定类型元素序列的中位数(简单解法)
数据结构·c++·算法
南境十里·墨染春水37 分钟前
C++ 笔记 赋值兼容原则(公有继承)(面向对象)
开发语言·c++·笔记
森G3 小时前
29、QStringListModel 和 QListView---------Model/View模型视图
c++·qt
ALex_zry9 小时前
C++网络编程心跳机制与连接保活:长连接稳定性保障
开发语言·网络·c++