插入排序(c++实现)

github博客传送门
博客园传送门

插入排序原理:

动图

#include<iostream>
using namespace std;

//插入排序
void InsertionSort(int a[], int size)
{
	int i;			//有序区间的最后一个元素的位置,i+1就是无序区间最左边元素的位置
	for(i = 0; i < size-1; ++i){
		int tmp = a[i + 1];  //tmp是待插入到有序区间的元素,即无序区间最左边的元素
		int j = i;
		while(j >= 0 && tmp < a[j]){		//寻找插入的位置 
			a[j + 1] = a[j];				//比tmp大的元素都往后移动 
			--j;
		}
		a[j + 1] = tmp;
	}
}

//输出二维数组,rows是行数
void PrintArray(int a[][5], int rows)
{
	for(int i = 0; i < rows; ++i){
		for(int j = 0; j < 5; ++j)
			cout << a[i][j] << " ";
		cout << endl;
	}
} 


//主函数 
int main(){
	int b[5] = {50, 30, 20, 10, 40};
	int a2d[3][5] = {{5, 3, 2, 1, 4},{10, 20, 50, 40, 30},{100, 120, 50, 140, 30}};
	InsertionSort(b, 5);
	for(int i = 0; i < 5; ++i)
		cout << b[i] << " ";
	cout << endl;
	for(int i = 0; i < 3; ++i)		//将 a2d每一行均排序 
		InsertionSort(a2d[i], 5);
	PrintArray(a2d, 3);
	return 0;
}

输出:

结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值