美文网首页
选择排序(python实现)

选择排序(python实现)

作者: 远行_2a22 | 来源:发表于2020-02-04 14:11 被阅读0次

选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间。

算法步骤

  • 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置

  • 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

  • 重复第二步,直到所有元素均排序完毕。

# -*- coding:utf-8 -*-
def selection_sort(arr):
    for i in range(len(arr) - 1):
        # 记录最小数的索引
        min_index = i
        for j in range(i + 1, len(arr)):
            if arr[j] < arr[min_index]:
                min_index = j
        # i 不是最小数时,将 i 和最小数进行交换
        if i != min_index:
            arr[i], arr[min_index] = arr[min_index], arr[i]
    return arr


if __name__ == '__main__':
    array = [2, 4, 1, 3, 5, 8, 7, 8, 4, 9]
    print selection_sort(array)

选择排序复杂度

1.时间复杂度:

  • 平均时间复杂度:O(n^2)
  • 最大时间复杂度:O(n^2)
  • 最小时间复杂度:O(n^2)
  1. 空间复杂度:O(1)
  2. 稳定性:不稳定
    比如序列5 8 5 2 9,第一遍选择第1个元素5和2交换,那么原序列中2个5的相对前后顺序就被破坏了,所以选择排序不是一个稳定的排序算法。

选择排序VS冒泡排序

  • 冒泡排序通过依次交换相邻两个顺序不合法的元素位置,从而将当前最小(大)元素放到合适的位置
  • 选择排序每遍历一次都记住了当前最小(大)元素的位置,最后仅需一次交换操作即可将其放到合适的位置。

相关文章

  • 排序算法详细代码实现

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

  • python实现选择排序(SelectionSort)

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

  • 七大排序算法的 Python

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

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

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

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

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

  • python 排序算法

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

  • Python 实现七大排序算法

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

  • 选择排序Python实现

    选择排序分析 输入: 长度为length的无序数组 输出: 长度为length的升序数组 原理从第一个数开始, 遍...

  • python实现选择排序​

    python实现选择排序​ ​ 假设你有一个因为列表,上面记录你歌曲的播放数量,现在需要对音乐列表进行排序,按...

  • 选择排序 Python实现

网友评论

      本文标题:选择排序(python实现)

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