选择排序,你会选择吗?

Posted 爱码有道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选择排序,你会选择吗?相关的知识,希望对你有一定的参考价值。

大家好,我是道哥,今天我们来聊选择排序。
人生处处是选择,选择比努力更重要。那么,什么是选择排序呢?
你肯定看过古代皇帝选妃子的过程,如果要根据美貌对妃子进行排序,那具体流程是怎样的呢?


很显然,皇帝的思路很简单:

  • 先选出最美的,也就是第一美人

  • 再从剩余人中选出最美的,也就是第二美人

  • 再从剩余人中选出最美的,也就是第三美人

  • ...

如此循环,就形成了美人的排序,这就是选择排序。

曾经,在一次面试中,有个应届毕业生的基础不好,基本算是问啥啥不会。于是,为了缓和氛围,且让面试达到要求的20分钟以上,我让他说说最简单的选择排序的大致思路,他还是不清楚,然后,肯定就没有然后啦。


图解选择

现在,我们有四个美女 A、B、C、D ,要选出身高最高的,该怎么选择呢?
首先,我们把A放到一个盒子中装起来,如下:

选择排序,你会选择吗?



然后,用B和盒子中的A比较,发现B比盒子中的A高,所以就把A淘汰,B进入盒子,如下:

选择排序,你会选择吗?



然后用C和盒子中的B比较,发现C矮于B, 所以B仍然保留在盒子中,如下:

选择排序,你会选择吗?


然后用D和盒子中的B比较,发现D矮于B, 所以B仍然保留在盒子中。于是,第1轮选择结束后,身高最高的B被选出来了,这就是选择的过程。

如上选择的本质,其实就是一个擂台赛,败者下台,胜者留台。


第1轮:

经历第1轮的选择后,留在盒子中的人是B,她是身高最高的,如下:

选择排序,你会选择吗?


第2轮:

接下来,要从A、C、D中选出身高最高的人,用同样的思路,很显然,最后留在盒子里面的是D, 如下:

选择排序,你会选择吗?


第3轮:

接下来,要从A和C中进行选择,显然,身高较高的A被选到了盒子中,如下:

选择排序,你会选择吗?


那么,剩下的C肯定就是身高最矮的了。4个人,经历3轮选择,就形成了最后的排序:

选择排序,你会选择吗?



编程实现

下面,我们用C++代码来实现选择排序,如下:
#include<iostream>using namespace std;
void swap(int &x, int &y){ int tmp; tmp = x; x = y; y = tmp;}
void selectSort(int a[], int n){ int i, j, pos; for(i = 0; i < n - 1; i++) //进行n-1次选择 { pos = i; for(j = i + 1; j < n; j++) { if(a[j] < a[pos]) { pos = j; }
}
swap(a[i], a[pos]); }}
int main(){ int a[] = {20, 40, 10, 30}; selectSort(a, 4); int i; for(i = 0; i < 4; i++) { cout << a[i] << " "; }
cout << endl; return 0;}
结果: 10 20 30 40
选择排序的思路挺简单。我们也会一步一个脚印,争取每篇文章讲清讲透一件事,也希望大家阅读后有所收获,心情愉快。

你好,我是道哥,CSDN前30名,曾混迹于BAT大厂。公众号讲解计算机基础、网络、数据结构、算法、C++、Java等多方面的编程知识。欢迎点击名片关注道哥,感谢点赞和在看支持哦。