一,冒泡排序
冒泡排序我就不多讲了,大体上就是比较相邻的两个数,每次把较大的数沉底。流程图大致上如下:
图是截得别人的,只是说明一下,代码没有参看别人的,写的不好,有更好的写法可以一起探讨。下面是代码:
1 def bubble(list): 2 #print(list) 3 for index in range(1,len(list)): #比较6趟 4 print(" index: %d" %index) 5 for index2 in range(len(list)-1,0,-1): 6 print("index2 = %d:" %index2) 7 if list[len(list) - index2-1] > list[len(list) - index2]: 8 temp = list[len(list) - index2-1] 9 list[len(list) - index2 - 1] = list[len(list) - index2] 10 list[len(list) - index2] = temp 11 print(list) 12 list = [3, 6, 4, 2, 11, 10, 5,12,1,7,10] 13 bubble(list)
二,选择排序
选择排序大体上就是每次在列表中找出最小的数,拿出来,然后再把拿出最小值后的列表在找最小数,就是这个思路。如图:
1 def xuanze(list): 2 list2 = [] 3 for index in range(1,len(list)): 4 print("第 %d 次排序list,list2分别为:" %index) 5 min = list[0] #最小值 6 for i in list: #这里的i是里面的数值,而不是序号,print(i)可验证 7 #print(i) 8 if i < min: 9 min = i 10 #print(list.index(min)) #知道值求位置 11 locate = list.index(min) #最小值的序号 12 temp = list[0] #以下三行是交换 13 list[0] = list[locate] 14 list[locate] = temp 15 16 print(list) 17 list2.append(list[0]) 18 list.remove(list[0]) 19 '''当交换位置后的list第一个值被remove出去后, 20 此时的list是[56,80,91,20]了,依此类推,这里是 21 本算法利用list最好玩的地方,可以少写一个for''' 22 print(list2) 23 24 print("最终的list2:") 25 list2.append(list[0]) 26 print(list2) 27 if __name__ == '__main__': 28 list = [56,12,80,91,20,33,89,99] 29 xuanze(list)
17:06:26 2018-05-24