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]) 相关推荐
zhaobig 2020-11-16
kikaylee 2020-10-31
PYTandFA 2020-09-15
CloudStrife0 2020-08-23
hang0 2020-08-16
lzujiangge 2020-08-16
RocNg 2020-08-15
xiesheng 2020-08-06
Tristahong 2020-08-05
georgeandgeorge 2020-08-03
elizabethxxy 2020-07-27
flycony 2020-07-05
柠檬班 2020-07-04
magicandy 2020-07-04
fanhuasijin 2020-06-27