算法之插入排序与选择排序

排序算法详解:选择排序与插入排序

选择排序

1,选择待排序数组中的第i个元素

2,从它之后,也就是从第i+1个元素到最后一个元素(N)中找到最小的元素,将其与1中选择的元素互换

特点:排序过程中,前i个元素是排好序的

插入排序

1,将待排序数组的第i个元素放入temp

2,向左移动一位,如果是比temp大的元素,就替换掉当前的元素

特点:排序过程中,前i个元素是排好序的

选择排序在i后面的元素中查找,插入排序在i前面的元素中查找。

顾名思义,选择是在未排序好的数组中选出合适的元素,插入是往排序好的数组中插入元素。


插入排序:

void InsertSort(int a[],int M){
	int tmp;
	int i, j;
	for (i = 1; i < M; ++i){
		tmp = a[i];
		for (j = i; j > 0 && a[j - 1] > tmp; j--)
			a[j] = a[j - 1];
		a[j] = tmp;

		for (int k = 0; k < M; ++k)
			cout << a[k] << " ";
		cout << endl;
	}
}
选择排序:

void SelectSort(int a[],int M){
	int pos;
	int tmp;
	for (int i = 0; i < M; ++i)
	{
		pos = i;
		tmp = a[i];
		for (int j = i + 1; j < M; ++j)
		{
			if (a[j] < tmp)
			{
				pos = j;
				tmp = a[j];
			}
		}
		a[pos] = a[i];
		a[i] = tmp;

		for (int k = 0; k < M; ++k)
			cout << a[k] << " ";
		cout << endl;
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值