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

简介: 直接选择排序最好最坏情况时间复杂度均为O(n^2),不稳定,其优势在于最多只需交换n次,交换操作比比较操作耗时。 1. 算法思想           从待排序序列中选择最小的元素,放入有序序列的末尾;如此循环直至待排序序列为空。

直接选择排序最好最坏情况时间复杂度均为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;
		}
	}
}

目录
相关文章
|
2月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--希尔排序
数据结构与算法(Java篇)笔记--希尔排序
|
2月前
|
机器学习/深度学习 存储 算法
【算法沉淀】刷题笔记:并查集 带权并查集+实战讲解
【算法沉淀】刷题笔记:并查集 带权并查集+实战讲解
|
2月前
|
搜索推荐 算法 C语言
C语言选择排序算法,从入门到精通只需1秒!
C语言选择排序算法,从入门到精通只需1秒!
|
17天前
|
人工智能 算法 搜索推荐
直接插入排序、希尔排序、直接选择排序、堆排序、冒泡排序——“数据结构与算法”
直接插入排序、希尔排序、直接选择排序、堆排序、冒泡排序——“数据结构与算法”
|
26天前
|
存储 算法 搜索推荐
【数据结构与算法】归并排序(详解:递归与非递归的归并排序 | 赠:冒泡排序和选择排序)
【数据结构与算法】归并排序(详解:递归与非递归的归并排序 | 赠:冒泡排序和选择排序)
|
28天前
|
机器学习/深度学习 搜索推荐 算法
【排序算法】插入排序与选择排序详解
【排序算法】插入排序与选择排序详解
|
2月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--快速排序
数据结构与算法(Java篇)笔记--快速排序
|
2月前
|
机器学习/深度学习 算法 搜索推荐
数据结构与算法(Java篇)笔记--归并排序
数据结构与算法(Java篇)笔记--归并排序
|
2月前
|
算法 搜索推荐 Java
数据结构与算法(Java篇)笔记--选择排序
数据结构与算法(Java篇)笔记--选择排序
|
2月前
|
搜索推荐 Java
Java实现选择排序算法
Java实现选择排序算法
15 0