选择排序python

一、概念及原理
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。
二、分析以及实现
简单来说,序列循环找出最大或者最小值放在序列前面。其实和冒泡有一点点像,每次循环找出循环序列的最值放在最右边完成排序。
用升序举例:
1.用变量min_num做最小值记录,初始值设为序列第一个
2.在右边序列循环找出最小值并与min_num交换
3.与未排序的首元素交换
4.重新将min_num定在未排序序列第一位

 for i in range(len(alist)-1):  # i:  0 ~ n-2
        min_num = alist[i]  # 每次循环结束后的最小值要重新定在未排序序列第一位的第一位
        for j in range(i+1, len(alist)):
            if alist[j] < min_num:
                alist[j], min_num = min_num, alist[j]
        alist[i], min_num = min_num, alist[i]
    return alist

完整代码:



def select_sort(alist):
    count = 0
    for i in range(len(alist)-1):  # i:  0 ~ n-2
        min_num = alist[i]  # 每次循环结束后的最小值要重新定在右边列表的第一位
        for j in range(i+1, len(alist)):

            if alist[j] < min_num:
                alist[j], min_num = min_num, alist[j]
                count += 1

        alist[i], min_num = min_num, alist[i]
    return alist,count

def main():
    alist = [2,5,7,9,4,1,5,7,3,5,86,45,221,10]
    print(select_sort(alist))
    listA = [2,5,8,4,9,5,1,4]
    print(select_sort(listA))

if __name__ == '__main__':
    main()

与冒泡排序比较,发现他们比较次数一样,选择排序具体会受实际待排序序列影响较大

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 某次二面时,面试官问起Js排序问题,吾绞尽脑汁回答了几种,深感算法有很大的问题,所以总计一下! 排序算法说明 (1...
    流浪的先知阅读 1,255评论 0 4
  • 排序算法说明 (1)排序的定义:对一序列对象根据某个关键字进行排序; 输入:n个数:a1,a2,a3,…,an 输...
    code武阅读 750评论 0 0
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 5,303评论 0 52
  • 1、常用排序算法 2、快速排序法 基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比...
    Bling_ll阅读 613评论 0 0
  • 荣庆特色全羊提示您:)现在开始吃这种肉,冬天关节不痛、手脚不凉! 更多精彩内容请关注博主 与其它肉类食品相比,羊...
    我知道你饿了阅读 648评论 0 1

友情链接更多精彩内容