zoukankan      html  css  js  c++  java
  • python初级(302) 8 列表(选择排序练习二)

    一、复习:

    条件循环:while

    i = 3
    while i > 0:
        print(i)
        i –= 1

    arr = [2, 3, 5, 7, 9]
    while len(arr) > 0:
        num = arr[0]
        arr.remove(num)
        print(arr)

    选择排序:

    [3, 10, 2, 7, 16]

    1、找到最小值get_min()

    def get_min(arr):
        num = arr[0]
        for i in range(1, len(arr)):
            if arr[i] < num:
                num = arr[i]
        return num
    
    get_min([3, 5, 9, 2, 7])

    二、选择排序

    第二步:将最小值加入到新列表中,并从旧表表中删除

    第三步:再次找最小值,直到旧列表为空

    def xuanze(arr):
        arr2 = list()
        while len(arr) > 0:
            num = get_min(arr)
            arr.remove(num)
            arr2.append(num)
        return arr2

    new_1 = xuanze([3, 5, 9, 2, 7])
    print(new_1)
    new_2 = xuanze([7, 9, 3, 2, 8])
    print(new_2)
    new_3 = xuanze([8, 9, 3, 7, 2])
    print(new_3)

    三、课后扩展

    将排序集成到一个类中

    class MySort:
        """
        排序集合
        """
        
        def get_min(self, arr):
            num = arr[0]
            for i in range(1, len(arr)):
                if arr[i] < num:
                    num = arr[i]
            return num
        
        def xuanze(self, arr):
            """
            选择排序
            """
            arr2 = list()
            while len(arr) > 0:
                num = self.get_min(arr)
                arr.remove(num)
                arr2.append(num)
            return arr2
    
    
    mysort = MySort()
    arr = mysort.xuanze([3, 5, 2, 7, 8])
    print(arr)
  • 相关阅读:
    1725最少硬币问题(DP)
    3358高数Umaru系列(9)——哈士奇(DP)
    1018骨牌铺方格(分治算法)
    3664顺序表应用7:最大子段和之分治递归法(分治算法)
    1722整数因子分解问题(分治算法)
    剑指offer JZ-11
    剑指offer JZ-10
    剑指offer JZ-9
    剑指offer JZ-8
    剑指offer JZ-7
  • 原文地址:https://www.cnblogs.com/luhouxiang/p/12208679.html
Copyright © 2011-2022 走看看