选择排序

2020-06-23  本文已影响0人  SunnyQjm

主要思想:每轮依次 从未排序部分选出一个最小的元素放置于未排序序列的第一个位置

注意:

  • PPT中没有统一,其实现刚好是反过来的,它每轮依次 从未排序部分选出一个最大的元素放置于未排序序列的最后一个位置

  • PPT中选择排序反向实现,插入排序又正向实现,这边统一都改成正向实现,比较好对比

2.1 简单演示

  • 白色背景表示未排序部分
  • 灰色背景表示已排序部分
  • 淡绿色指示下一个放置本轮最小元素的位置
  • 淡黄色指示本轮最小元素

2.2 实现分析

PPT中的实现与下述过程基本相似,但是PPT的代码实现是,每轮选一个最大的放在未排序列表的最后

对于一个长度位n的待排序数组A,我们作如下分析:

2.3 实现

def selectSort(A):
    n = len(A)
    for i in range(n - 1):
        minValueIndex = i
        for j in range(i + 1, n):
            if A[j] < A[minValueIndex]:
                minValueIndex = j
        if minValueIndex != i:
            A[i], A[minValueIndex] = A[minValueIndex], A[i]

if __name__ == '__main__':
    A = [5, 7, 1, 3, 6, 2, 4]
    selectSort(A)
    print(A, "= [1, 2, 3, 4, 5, 6, 7]")
上一篇 下一篇

猜你喜欢

热点阅读