排序算法--插入排序

实现逻辑

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

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

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

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

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

⑥ 重复步骤②~⑤

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;
}

输出结果:

相关推荐
茉莉玫瑰花茶2 分钟前
CMake 工程指南 - 工程场景(3)
c++·mfc
历程里程碑3 分钟前
39. 从零实现UDP服务器实战(带源码) V1版本 - Echo server
服务器·开发语言·网络·c++·网络协议·udp·php
add45a13 分钟前
C++与自动驾驶系统
开发语言·c++·算法
&星痕&14 分钟前
从零开始手搓 (1)计算图 (c++,python语言实现)
c++·python·深度学习·机器学习
TsukasaNZ19 分钟前
C++中的命令模式
开发语言·c++·算法
superkcl202234 分钟前
指针常量有什么用呢?
开发语言·c++·算法
Yungoal35 分钟前
C++基础语法3
开发语言·c++
今儿敲了吗37 分钟前
python基础学习笔记第四章
c++·笔记·python·学习
無限進步D1 小时前
差分算法 cpp
c++·算法·蓝桥杯·竞赛
biter down1 小时前
C++ 精准控制对象的创建位置(堆 / 栈)
开发语言·c++