插入排序(C++实现)

         插入排序主要适用于少量元素的排序。假定我们按从小到大的顺序排序,每次插入的时候,新插入的元素都要跟前面已经排好序的元素进行比较,直到第一次找到比它小的元素,则将要插入的元素插入到第一个比它小的元素后面。此排序方法,可以参考斗地主抓牌,我们总是习惯抓到一张牌的时候,按大小顺序排列好,这时候,我们一般从大的一头开始比较,直到找到合适的位置就插入。

        插入排序的伪算法:

INSERT_SORT(A)
for(j=1 to A.length)
	{
		key = A[j];//A[j]为将要插入的元素
		i = j-1;//首先跟前面一个比较
		while(i>=0 && A[i]>key)//跟前面的所有元素比较
		{
			A[i+1] = A[i];
			i = i-1;
		}
		A[i+1] = key;
	}

      举例:

#include<iostream>
#include<cstdlib>

using namespace std;

void insert_sort(int a[]);//插入排序

int main()
{

	int A[10];
	int i;

	for(i=0; i<10; i++)
	{
		A[i] = rand()%100; //获取随机数
	}

	for(i=0; i<10; i++)
	{
		cout<<A[i]<<"\t";
	}
	cout<<endl;
	
	insert_sort(A);
	for(i=0; i<10; i++)
	{
		cout<<A[i]<<"\t";
	}
	cout<<endl;

	return 0;
}

void insert_sort(int a[])
{
	int i,j,key;

	for(j=1; j<10; j++)
	{
		key = a[j];
		i = j-1;
		while(i>=0 && a[i]>key)
		{
			a[i+1] = a[i];
			i = i-1;
		}
		a[i+1] = key;
	}
	return;
}
此算法并不需要重新构造一个数组来存放已经排序好的部分,而是直接在原来数组的基础上操作,进行比较的时候,当发现比插入元素大的元素,则将大的元素后移一位,直到找到比它小的元素,再将插入元素插入至此。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值