python初级(302) 7 列表(排序练习)

一、 选择排序

[3, 10, 2, 7, 16]

第1次:[3, 10, 2, 7, 16]找出2, 放入新数组中[2]

第2次:[3, 10, 7, 16]找出3, 追加到新数组中[2, 3]

第3次:[10, 7, 16]找出7,追加到新数组中[2, 3, 7]

第4次:[10, 16]找出10,追加到新数组中[2, 3, 7, 10]

第5次:[16]找出16, 追加到新数组中[2, 3, 7, 10, 16]

排序完成

关键点:找到最小值

观察,查找最小数一直持续到原先的列表长度为0时为止

代码:

def get_min_item(arr):
    min_num = arr[0]
    for i in range(1, len(arr)):
        if arr[i] < min_num:
            min_num = arr[i]
    return min_num

def sort1(arr):
    arr2 = list()
    while len(arr):
        num = get_min_item(arr)
        arr2.append(num)
        arr.remove(num)
    return arr2

sort1([3, 9, 7, 1, 5])

二、冒泡排序

比较相邻的元素。如果第一个比第二个大,就交换他们两个。

对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

针对所有的元素重复以上的步骤,除了最后一个。

持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较

代码:

def sort2(arr):
    length = len(arr)
    while length >= 2:
        for i in range(length-1):
            if arr[i] > arr[i + 1]:
                arr[i], arr[i+1] = arr[i+1], arr[i]
        length -= 1
    print(arr)
        
sort2([10, 3, -3, 6, 7, 9, 12, 7, 6, -5])

相关推荐