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]

  • 相关阅读:
    springboot02-SpringSecurity
    java基础07- 二维数组
    java基础06-数组的使用
    逆向工程核心原理——第四章
    逆向工程核心原理——第三章
    Crackme_1_Acid_burn
    Crackme_2_Afkayas.1
    逆向工程核心原理——第二章
    MessageBox
    Python(基础)
  • 原文地址:https://www.cnblogs.com/Sksitigarbha/p/10144518.html
Copyright © 2011-2022 走看看