算法笔记--直接选择排序

直接选择排序的时间复杂度在所有情况下都是O(n^2),它不稳定,但优点是最多只需要n次交换。该算法通过每次从未排序部分选取最小元素并放到已排序部分的末尾,直到全部元素排序完成。代码实现使用了C语言。
摘要由CSDN通过智能技术生成

直接选择排序最好最坏情况时间复杂度均为O(n^2),不稳定,其优势在于最多只需交换n次,交换操作比比较操作耗时。


1. 算法思想

          从待排序序列中选择最小的元素,放入有序序列的末尾;如此循环直至待排序序列为空。

2. 时间复杂度

          最好情况 O(n^2):序列正序有序,无需交换元素,但比较时间为O(n^2)

          最坏情况 O(n^2):序列逆序有序,交换n次,比较O(n^2)

3. 空间复杂度 O(1)

          就地排序,辅助空间为常数级

4. 稳定性

          不稳定。存在不相邻元素的交换

5. 代码实现(C语言)

void SelectSort(int *A, int n)
{
	int i, j, k;
	int min, tmp;

	for (i = 0; i < n - 1; ++i)
	{
		k = i;
		min = A[i];

		for (j = i + 1; j < n; ++j)
		{
			if (A[j] < min)
			{
				k = j;
				min = A[j];
			}
		}

		if (k != i)
		{
			tmp = A[i];
			A[i] = min;
			A[k] = tmp;
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值