直接选择排序:最通俗易懂的排序算法

📋 前言

直接选择选择排序也是八大排序之一的排序算法,虽然实际应用上其实并不会选择它来进行排序,但它的思想和价值还是十分值得我的去学习的!

@TOC

一、直接选择选择排序的思想

选择排序的思想就是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 。

每次遍历找到最大的和最小的俩个数en来存放在开头和末尾然后再一次重新遍历直到数组全部遍历完毕

  • begin == end

二、选择排序的构建

  • 在元素集合array[i]--array[n-1]中选择关键码最大(小)的数据元素

  • 若它不是这组元素中的最后一个(第一个)元素,则将它与这组元素中的最后一个(第一个)元素交换

  • 在剩余的array[i]--array[n-2](array[i+1]--array[n-1])集合中,重复上述步骤,直到集合剩余1个元素

2.1 选择排序的优化

上图每次都是找到其中一个数来进行排序,其实我们实际代码是可以优化一下的每次从

  • 前面开始找到 最大的 和最小的
  • 然后最小的放在前面, 最大的放在后面

2.1 代码实现

🍸 代码演示:

c 复制代码
// 选择排序
void SelectSort(int* a, int n)
{
	int begin = 0,end = n-1;
	while (begin < end)
	{
		int mini = begin, maxi = begin;
		for (int i = begin+1; i <= end; i++)
		{
			if (a[mini] > a[i])
			{
				mini = i;
			}

			if (a[maxi] < a[i])
			{
				maxi = i;
			}

		}

		Swap(&a[mini], &a[begin]);
		
		if (maxi == begin)
		{
			maxi = mini;
		}
		Swap(&a[maxi], &a[end]);
		begin++;
		end--;
	}
}

📑 代码结果:

三、选择排序的总结

直接选择排序的特性总结:

  1. 直接选择排序思考非常好理解,但是效率不是很好。实际中很少使用
  2. 时间复杂度:O(N^2)
  3. 空间复杂度:O(1)
  4. 稳定性:不稳定

📝文章结语:

:cloud: 把本章的内容全部掌握,铁汁们就可以熟练应用switch语句啦! 看到这里了还不给博主扣个: ⛳️ 点赞🍹收藏 :star: 关注 💛 💙 💜 ❤️ 💚💓 💗 💕 💞 💘 💖 拜托拜托这个真的很重要! 你们的点赞就是博主更新最大的动力! 有问题可以评论或者私信呢秒回哦。

相关推荐
我不会编程5555 小时前
Python Cookbook-5.1 对字典排序
开发语言·数据结构·python
owde6 小时前
顺序容器 -list双向链表
数据结构·c++·链表·list
第404块砖头6 小时前
分享宝藏之List转Markdown
数据结构·list
蒙奇D索大6 小时前
【数据结构】第六章启航:图论入门——从零掌握有向图、无向图与简单图
c语言·数据结构·考研·改行学it
A旧城以西7 小时前
数据结构(JAVA)单向,双向链表
java·开发语言·数据结构·学习·链表·intellij-idea·idea
杉之7 小时前
选择排序笔记
java·算法·排序算法
烂蜻蜓7 小时前
C 语言中的递归:概念、应用与实例解析
c语言·数据结构·算法
念九_ysl8 小时前
基数排序算法解析与TypeScript实现
前端·算法·typescript·排序算法
守正出琦8 小时前
日期类的实现
数据结构·c++·算法
ゞ 正在缓冲99%…9 小时前
leetcode75.颜色分类
java·数据结构·算法·排序