zoukankan      html  css  js  c++  java
  • Python 实现选择排序

    选择排序算法步骤:

    1. 找到数组中最小的那个元素中,
    2. 将它和数组的第一个元素交换位置,
    3. 在剩下的元素中找到最小的元素,将它和数组的第二个元素交换位置,
    4. 如此往复,知道将整个数组排序。

    逐步分析:

    1. 假设一个数组有 6 个元素,
      [5, 1, 4, 3, 2, 6]
    2. 第 1 个元素为 5,与剩余 5 个元素相比,1 是最小的元素,所以 5 和 1 交换位置,
      [1, 5, 4, 3, 2, 6]
    3. 第 2 个元素为 5,与剩余 4 个元素相比, 2 是最小的元素,所以 5 和 2 交换位置,
      [1, 2, 4, 3, 5, 6]
    4. 第 3 个元素为 4,与剩余 3 个元素相比, 3 是最小的元素,所以 4 和 3 交换位置,
      [1, 2, 3, 4, 5, 6]
    5. 不断重复直到排好序。
    def select_sort(arr):
        # 索引从 0 到 n-2
        for i in range(len(arr) - 1):
            # 最小元素的索引
            min = i
            # min 与从 i+1 到 n-1 的元素比较
            j = i + 1
            while j < len(arr):
                if arr[min] > arr[j]:
                    # 找到最小的元素
                    min = j
                j += 1
            # 交换位置
            arr[i], arr[min] = arr[min], arr[i]
    
    
    a = [5, 1, 4, 3, 2, 6]
    select_sort(a)
    print(a)
    

    稳定性:不稳定
    复杂度:
    平均 O(n^2)
    最坏 O(n^2)
    最好 O(n^2)

    博客已迁移到 blog.pythonking.top,如果地址失效或者有其他问题请到 github.com/DongchengWang/my-blog
  • 相关阅读:
    hdu1698(线段树)
    poj3468(线段树)
    hdu1394(线段树求逆序对)
    hdu1754(线段树)
    hdu1166(线段树)
    hdu2412(树形dp)
    hdu4714(树形dp)
    hdu4705(树形dp)
    hdu4679(树形dp)
    滑动导航条
  • 原文地址:https://www.cnblogs.com/stardust233/p/12193842.html
Copyright © 2011-2022 走看看