选择排序python

作者: 楠木cral | 来源:发表于2019-02-18 20:34 被阅读0次

一、概念及原理
选择排序(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()

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

相关文章

  • Python排序算法有哪几种?

    python排序算法有哪些?python中常见的排序算法有:插入排序、选择排序、冒泡排序、快速排序、归并排序、希尔...

  • 基础算法笔记 python和C++

    二分查找 python code 选择排序 python code c++ code 快速排序 python c++

  • 排序算法详细代码实现

    算法分类 算法时间复杂度 选择排序 插入排序 C++实现 Python实现 冒泡排序 Python实现 归并排序 ...

  • python实现选择排序(SelectionSort)

    python实现【选择排序】 算法原理及介绍 选择排序(Selection-sort)是一种简单直观的排序算法。它...

  • 七大排序算法的 Python

    本文用Python实现了插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序。 1、插...

  • 八大排序算法的 Python 实现(转)

    本文用Python实现了插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序。 1、插...

  • Python实现程序员必备之排序算法汇总

    本文用Python实现了快速排序、插入排序、希尔排序、归并排序、堆排序、选择排序、冒泡排序共7种排序算法。 一、快...

  • Python 实现七大排序算法

    本文用 Python 实现了插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序。 先整体看一下...

  • python 排序算法

    文章概述 介绍各大常用经典的排序算法和效率,以及python实现常用算法(冒泡排序,选择排序,快速排序,插入排序)...

  • python选择排序

    写一个python 选择排序: range(start, end, step) 产生一个可以迭代的对象。

网友评论

    本文标题:选择排序python

    本文链接:https://www.haomeiwen.com/subject/axvzeqtx.html