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

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

📋 前言

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

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

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

每次遍历找到最大的和最小的俩个数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--;
  }
}

📑 代码结果:

三、选择排序的总结

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

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

📝文章结语:

☁️ 把本章的内容全部掌握,铁汁们就可以熟练应用switch语句啦!

看到这里了还不给博主扣个:
⛳️ 点赞🍹收藏 ⭐️ 关注

💛 💙 💜 ❤️ 💚💓 💗 💕 💞 💘 💖

拜托拜托这个真的很重要!

你们的点赞就是博主更新最大的动力!

有问题可以评论或者私信呢秒回哦。

目录
相关文章
|
7月前
|
搜索推荐
深入浅出排序算法之简单选择排序
深入浅出排序算法之简单选择排序
|
7月前
|
搜索推荐
深入浅出排序算法之计数排序
深入浅出排序算法之计数排序
|
7月前
|
搜索推荐 算法
深入浅出排序算法之基数排序
深入浅出排序算法之基数排序
|
7月前
|
搜索推荐
深入浅出排序算法之归并排序
深入浅出排序算法之归并排序
|
12月前
|
人工智能 算法 搜索推荐
数据结构与算法(七):排序算法
数据结构与算法(七):排序算法
72 0
|
搜索推荐 算法 测试技术
【数据结构与算法】排序算法总结(下)
【数据结构与算法】排序算法总结(下)
【数据结构与算法】排序算法总结(下)
|
搜索推荐 算法 C++
【数据结构与算法】排序算法总结(上)
【数据结构与算法】排序算法总结(上)
【数据结构与算法】排序算法总结(上)
|
搜索推荐 数据可视化 Java
【笔记16】排序算法:冒泡排序
排序:把一串没有按照顺序排列的数按照升序或降序排列。 排序前:1、6、2、7、8、3、9、5、4 升序:1、2、3、4、5、6、7、8、9 降序:9、8、7、6、5、4、3、2、1
118 0
【笔记16】排序算法:冒泡排序
|
搜索推荐 Python
Python编程:排序算法之选择排序
Python编程:排序算法之选择排序
|
搜索推荐 Python
Python编程:排序算法之插入排序
Python编程:排序算法之插入排序