欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 8.4.1简单选择排序

8.4.1简单选择排序

2025/6/14 7:39:29 来源:https://blog.csdn.net/qq_43318174/article/details/148619384  浏览:    关键词:8.4.1简单选择排序

知识总览:

简单选择排序:

从还没排序的元素的位置从左到右一趟趟找,每次都找值最小的,然后和当前待排的第一个元素交换位置,直到剩下最后一个元素,每排序一个元素下一趟就不再找该元素了,从下一个元素开始排序

第一趟从左往右扫描找到值最小的元素13,把13和最前边位置的元素49交换如图2,

在第2趟排序中,找除了第一个已经排序好的元素外,从剩下待排元素中从左到右找到选择值最小的元素27和第2个元素38的位置交换

在第3趟排序,上同,找除了前2个剩余没排序的元素,从左到右找到值最小的38和第3个元素位置65交换

在第4趟排序,上同,找除了前3个剩余没排序的元素,从左到右找到值最小的49和第4个元素位置97交换,因为有2个49,但是优先选择先找到的49和97交换

在第5趟排序,上同,找除了前4个剩余没排序的元素,从左到右找到值最小的另一个49和第5个元素位置76交换

在第6趟排序,上同,找除了前5个剩余没排序的元素,从左到右找到值最小的65和第6个元素位置97交换

在第7趟排序,上同,找除了前6个剩余没排序的元素,从左到右找到值最小的76和第7个元素位置97交换,

最后一趟只剩下一个待排元素,肯定是最大的元素,不需要再处理了,至此结束

因此,n个元素,最后一个元素不用处理,则只需n-1趟处理

 

代码实现:

n个元素,要进行n-1趟排序,i从0开始,则要i< n-1进行n-1趟循环,用min变量记录最小元素位置,双层for循环,第一层记录本趟排序从i位置开始,第2层记录本趟循环最小元素位置,第2层for循环遍历完后如果min元素和开始排序的元素不相等,则交换开始排序i位置的元素和最小元素位置

 

算法性能分析:

空间复杂度:O(1),只需记录几个IBA能量就可以让排序顺序执行

时间复杂度:跟有序、无序、逆序没关系,不管什么顺序都要进行n-1趟排序,每进行一趟排序都要两两关键字对比,第一趟n个元素需要比较n-1次,第二趟n-1个元素待排需要比较n-2次,依次类推,直到排序结束,需要比较的关键字次数总和为n(n-1)/2即时间复杂度为O(n²)

元素交换次数<n-1次(为啥是小于,不是等于吗。。。)

算法不稳定:如下,第一趟选值最小的1和第一个元素交换,不带下划线的2跑到了带下划线2的后边,第2趟比较俩2相等不交换位置,则排序之后俩值相同的元素2已经改变了位置

简单选择排序即可适用于顺序表,又可适用于链表(适用于链表的话听说每遍历一次把元素值最小的放在链头或链尾)

 

知识回顾:

 

又水一篇。。。。。。。。。 

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词