📋 前言
直接选择选择排序也是八大排序之一的排序算法,虽然实际应用上其实并不会选择它来进行排序,但它的思想和价值还是十分值得我的去学习的!
一、直接选择选择排序的思想
选择排序的思想就是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 。
每次遍历找到最大的和最小的俩个数en来存放在开头和末尾然后再一次重新遍历直到数组全部遍历完毕
- begin == end
二、选择排序的构建
- 在元素集合array[i]–array[n-1]中选择关键码最大(小)的数据元素
- 若它不是这组元素中的最后一个(第一个)元素,则将它与这组元素中的最后一个(第一个)元素交换
- 在剩余的array[i]–array[n-2](array[i+1]–array[n-1])集合中,重复上述步骤,直到集合剩余1个元素
2.1 选择排序的优化
上图每次都是找到其中一个数来进行排序,其实我们实际代码是可以优化一下的每次从
- 前面开始找到 最大的 和最小的
- 然后最小的放在前面, 最大的放在后面
2.1 代码实现
🍸 代码演示:
// 选择排序 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--; } }
📑 代码结果:
三、选择排序的总结
直接选择排序的特性总结:
- 直接选择排序思考非常好理解,但是效率不是很好。实际中很少使用
- 时间复杂度:O(N^2)
- 空间复杂度:O(1)
- 稳定性:不稳定
📝文章结语:
☁️ 把本章的内容全部掌握,铁汁们就可以熟练应用switch语句啦!
看到这里了还不给博主扣个:
⛳️ 点赞
🍹收藏
⭐️ 关注
!
💛 💙 💜 ❤️ 💚💓 💗 💕 💞 💘 💖
拜托拜托这个真的很重要!
你们的点赞就是博主更新最大的动力!
有问题可以评论或者私信呢秒回哦。