Python数据结构与算法-选择排序(python数据结构顺序表基本操作)

选择排序

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

选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。

选择排序分析

排序过程:

红色表示当前最小值,黄色表示已排序序列,蓝色表示当前位置。

def selection_sort(alist):
    n = len(alist)
    # 需要进行n-1次选择操作
    for i in range(n-1):
        # 记录最小位置
        min_index = i
        # 从i+1位置到末尾选择出最小数据
        for j in range(i+1, n):
            if alist[j] < alist[min_index]:
                min_index = j
        # 如果选择出的数据不在正确位置,进行交换
        if min_index != i:
            alist[i], alist[min_index] = alist[min_index], alist[i]

alist = [54,226,93,17,77,31,44,55,20]
selection_sort(alist)
print(alist)

时间复杂度

  • 最优时间复杂度:O(n2)
  • 最坏时间复杂度:O(n2)
  • 稳定性:不稳定(考虑升序每次选择最大的情况)

选择排序演示



相关文章

Python程序员必备:数据结构与算法一览表

之前,笔者曾经在《Python和Ruby大PK,到底谁才是开发者最喜欢的语言》一文中,曾经向网友发起了Python VS Ruby VS 其它的投票活动,结果票数一面倒的全部投给了Python。Ope...

Python数据结构与算法实现总结(python数据结构知乎)

学习数据结构与算法是编程的核心基础之一。以下是使用Python实现常见数据结构与算法的总结:一、数据结构1. 链表节点定义:pythonclass Node:def __init__(self, da...

Python常用算法学习(4) 数据结构(原理+代码)-最全总结

数据结构简介1,数据结构  数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。简单来说,数据结构就是设计数据以何种方式组织并存贮在计算机中。比如:列表,集合与字...

动手打造深度学习框架:基本数据结构与算法

我们要实现的元程序库要包含哪些内容呢?这个元程序库并不需要包含非常复杂的数据结构与算法,但应该具有足够的通用性,能够为我们的深度学习框架实现提供有力的支持。STL就是此类通用函数库中的一个典范:它包含...

Python进阶 - day1:深入理解数据结构

以下是“Python进阶 - Day 1:深入理解数据结构”的详细学习内容,包含带注释的代码示例,帮助你掌握列表、字典、集合、元组的高级用法,并完成指定练习任务。学习内容列表(List)高级用法列表推...

实时可视化数据结构与算法让代码动起来

Stay 是一个专注于数据结构与算法可视化的编程学习网站,可将代码执行过程转化为生动流畅的动画,帮助学习者更直观地理解复杂概念。以下是其具体介绍:支持的语言及数据结构与算法支持的语言 :目前支持 Py...