码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2020-01-12 00:02:14      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:div   查找   turn   class   长度   sort   col   ret   选择   

一、 选择排序

[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])

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

标签:div   查找   turn   class   长度   sort   col   ret   选择   

原文地址:https://www.cnblogs.com/luhouxiang/p/12181531.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!