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)
    

    运行结果如下所示:

  • 相关阅读:
    mapreduce 函数入门 二
    mapreduce 函数入门 一
    Flume+Kafka+Storm+Redis 大数据在线实时分析
    mapReduce 大数据离线分析
    docker 简介
    flume安装使用+根据数据源分类
    hiho 171周
    如何新建一个空的optix工程
    读 Real-Time Rendering 收获
    hiho 1590
  • 原文地址:https://www.cnblogs.com/saixuyu/p/13496749.html
Copyright © 2011-2022 走看看