几个简单排序算法的Python实现

一,冒泡排序

   冒泡排序我就不多讲了,大体上就是比较相邻的两个数,每次把较大的数沉底。流程图大致上如下:

  图是截得别人的,只是说明一下,代码没有参看别人的,写的不好,有更好的写法可以一起探讨。下面是代码:

 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

猜你喜欢

转载自www.cnblogs.com/two-peanuts/p/9083375.html
今日推荐