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

    思路:每次选择一个最大或者最小的值排序,为了升序排序,我们选择以最小的值排序

      1.以第0位置的元素为假设最小值

        min_index = 0

      2.遍历列表,比较列表alist[min_index] 与 alist[j]的值,列表中的值比alist[min_index]的值小,发生交换

      此时发生有最小的值则继续判断:当min_index != 0的时候,则发生交换: 

        min_index = 0

        for j in range(len(alist)):

          if alist[j] < alist[min_index]:

            min_index = j

        if min_index != 0:

          alist[0],alist[min_index] = alist[min_index],alist[0]

      3.此时排序出第1位为最小值,因为每次排序的是列表的1,2,3,4...位的元素,所以min_index 等于为遍历列表的次数

      for i in range(len(alist)):

        min_index = i

        for j in range(min_index+1,len(alist)):

          if alist[j] < alist[min_index]:

            min_index = j

        if min_index != i:

          alist[i],alist[min_index] = alist[min_index],alist[i]

      4.代码优化

        1,当比较的时候,可以不与当前位置比较,直接从下一位开始,所以,j的起始点可以变为min_index +1 到列表最后一位

        2.当排序到min_index为列表长度的最后一位时,没有下一位可以比较,所以min_index的最后一次比较为len(alist)-1

    def selection_sort(alist):

      for i in range(len(alist)-1):

        min_index = i

        for j in range(min_index+1,len(alist)):

          if alist[j] < alist[min_index]:

            min_index = j

        if min_index != i:

          alist[i],alist[min_index] = alist[min_index],alist[i]

  • 相关阅读:
    通过scp拷贝文件时无需交互输入密码
    suse linux安装lrzsz
    shc加密shell脚本
    linux小程序--cmatrix
    linux系统PXE+Kickstart自动安装系统
    升级SSH
    shell生成随机数的几种方法
    django —— MVT模型
    Django学习---笔记一
    python学习--Django虚拟环境搭建
  • 原文地址:https://www.cnblogs.com/Sksitigarbha/p/10144518.html
Copyright © 2011-2022 走看看