zoukankan      html  css  js  c++  java
  • 常用排序算法:直接选择排序

    直接选择排序算法思路:

    第 1 趟,在待排序记录 r1 ~ r[n]中选出最小的记录,将它与 r1 交换;第 2 趟, 在待排序记录 r2 ~ r[n]中选出最小的记录,将它与 r2 交换;以此类推,第 i 趟在待排序 记录 r[i] ~ r[n]中选出最小的记录,将它与 r[i]交换,使有序序列不断增长直到全部排序 完毕。

    例如[2, 4, 3, 1, 0],第一趟找到最小值为0,将0和第一位交换,得到[0, 4, 3, 1, 2],第二趟从[4, 3, 1, 2]中找到最小值1,再和第一位交换得到[0, 1, 3, 4, 2],以此类推知道排序完成。

    代码实现:

    def select_sort(nums):
        for i in range(len(nums)):  # 第i趟开始时 无序区为:[i:]
            min_pos = i  # 最小值位置
            for j in range(i + 1, len(nums)):  # 在无序区里面找最小值,并记录位置
                if nums[j] < nums[min_pos]:
                    min_pos = j
            nums[min_pos], nums[i] = nums[i], nums[min_pos]  # 交换
            print(nums)
    
    
    select_sort([2, 4, 3, 1, 0])
    
    # [0, 4, 3, 1, 2]
    # [0, 1, 3, 4, 2]
    # [0, 1, 2, 4, 3]
    # [0, 1, 2, 3, 4]
    # [0, 1, 2, 3, 4]
  • 相关阅读:
    uni-app中使用Echarts绘画图表
    css设置Overflow实现隐藏滚动条的同时又可以滚动
    JS判断在哪一端浏览器打开
    ElementUI分页Pagination自动到第一页
    第203场周赛
    TreeSet使用
    155 最小栈
    234 回文链表
    141 环形链表
    2 两数相加
  • 原文地址:https://www.cnblogs.com/FanMLei/p/10501000.html
Copyright © 2011-2022 走看看