简单的选择排序

本文介绍了一种简单选择排序算法的工作原理及其实现过程。通过记录最小元素的下标并将其与当前位置元素交换,该算法能够在每次迭代中将当前未排序部分的最小元素放置到正确的位置上。文章还对比了选择排序与冒泡排序的不同之处,并分析了选择排序的空间和时间复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单选择排序算法,思路是这样的,取一个中间变量min来记录最小的数的下标,第一次循环,i = 1,min的下标首先为1,然后j =2一直遍历[]到数组结束,Array[min]和Array[j]作比较,如果Array[min] > Array[j],则min = j,j再取下一个数,一直到j遍历到数组的结尾,则此时Array[min]的值为第一次遍历的最小值,Array[min]h和Array[1]交换;第二次循环........直到i = k-1。

代码如下:

	void Selected(int Array[], int k)
	{
		int i;
		int j;
		int min;
		int tmp;
		for(i = 0; i <=k -2; ++i)
		{
			min = i;
			for(j = i+1; j <=k-1; ++j)
			{
				if(Array[min] > Array[j])
				min = j;
			}
			if(min != i )
			{		
				tmp = Array[min];
				Array[min] = Array[i];
				Array[i] = tmp;
			}
		}
	}

这个选择排序法和之前的冒泡排序法的初级版本比较像,不同点在于选择排序法在每一次的遍历中先把最小的元素找出来,然后再与第i个数做交换,而不是每次元素的值小于循环的第一个数时都进行交换,这样就提高了算法的效率。

选择排序法的空间复杂度,同样,这里只有几个新的元素i,j,min,tmp,空间复杂度小,时间复杂度,看最好的情况,最好的情况是数组已经排好了,这个时候交换的次数为零,但是遍历的次数n(n-1)/2,最坏的情况,遍历的次数为n(n-1)/2,交换的次数为n,所以总的算法的时间复杂度为o(n^2)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值