zoukankan      html  css  js  c++  java
  • Python算法--排序-选择排序

    一、选择排序

    在数据量小的时候,对于排序,我们也可以采用选择排序(Selection sort),是一种简单直观的排序算法。

    原理大致如下:首先,我们选择未排序数列的首位作为参考,然后依次用后面的元素与其进行比较,如果发现比他小(大),我们就进行交换位置处理,直到全部比对完成一轮后,再将第二个元素后面的元素依次与第二个元素进行比较,以此类推,直到全部遍历完所有的元素为止,就得到了一列有顺序的元素集合。

    我们看一下网上的这个示意图:

    二、编码实现

    直接上 Python 编码实现如下:

    # -*- coding: utf-8 -*-
    # @Author  : Sai
    # @Email   : 932934045@qq.com
    # @File    : select_sort.py
    # @Time    : 2020/8/11 14:54
    
    
    def selection_sort(arr):
        '''
        选择排序
        :param arr: 待排序列表
        :return: 排序后的列表
        '''
        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
            if min_Index != i:
                arr[i], arr[min_Index] = arr[min_Index], arr[i]
            # print(arr) # 这里我们可以打印每一轮排序后的结果,便于理解
        return arr
    
    
    if __name__ == '__main__':
        arr1 = [10, 4, 5, 9, 8, 6, 0, 3, 2, 7, 1]
        print("排序前顺序为:", arr1)
        new_arr = selection_sort(arr1)
        print("排序后顺序为:", new_arr)
    

    运行结果如下所示:

  • 相关阅读:
    fiddler中的HexView的16进制数据转明文
    安卓逆向分析韵达超市app接口及其实现
    安卓逆向分析百世来取app接口及其实现
    安卓逆向-快宝驿站
    安卓逆向-工具篇
    记录celery启动时出现bug
    python微信拼手气红包逻辑
    检测函数运行时间
    Python获取硬件信息(硬盘序列号,CPU序列号)
    sorted&filter&map
  • 原文地址:https://www.cnblogs.com/saixuyu/p/13496749.html
Copyright © 2011-2022 走看看