排序算法

 1 #coding=utf8
 2 #简单排序算法
 3 
 4 #冒泡排序算法
 5 ''''
 6 思路:[6,2,9,1,5,0]排序
 7 第一趟排序:
 8   第一次排序:6和2比较,6>2,交换位置:     2  6  9  1   5   0
 9   第二次排序:6和9比较,6<9,不交换位置: 2  6  9  1   5   0
10         第三次排序:9和1比较,9>1,交换位置:     2  6  1  9  5   0
11   第四次排序:9和5比较,9>5,交换位置:     2  6  1  5  9   0
12   第五次排序:9和0比较:9>0,交换位置:     2  6  1  5  0   9
13 
14   第一趟总共进行了5次比较, 排序结果:      2  6  1  5  0   9
15 -----------------------------------------------------
16 第二趟排序:
17     第一次排序:2和6比较,2<6,不交换位置:2  6  1  5  0   9
18     第二次排序:6和1比较,6>1,交换位置:   2  1  6  5  0   9
19     第三次排序:6和5比较,6>5,交换位置:   2  1  5  6  0   9
20     第四次排序:6和0比较,6>0,交换位置:  2  1  5  0  6   9
21     第五次排序:6和9比较,6<0,不交换位置:  2  1  5  0  6   9
22 以此类推
23 ''' 
24 def bubbleSort(list):
25     for i in range(len(list)-1):
26         for j in range(len(list)-i-1):
27             if list[j]>list[j+1]:
28                 list[j],list[j+1] = list[j+1],list[j]
29     print list
30     
31 #快速排序算法
32 '''
33 思路:1.任意选取一个数字,与之相比大小
34             小的放左边,大的放右边(类似二叉树)
35       2.递归思路
36 '''
37 def quickSort(list):
38     #计算数组长度
39     length = len(list)
40     #判断列表长度是否小于等于1,若满足条件,循环结束
41     if length <=1:
42         return list
43     
44     #生成一个索引,必须不超过列表索引
45     import random
46     index = random.randint(0,len(list)-1)
47     #取得随机值
48     value = list[index]
49     
50     #创建两个空的列表
51     left = []
52     right = []
53     #遍历判断随机值与当前索引值大小,小的放左边列表,大的放右边列表
54     for i in range(len(list)):
55         if value <= list[i]:
56             right.append(list[i])
57         else:
58             left.append(list[i])
59     #递归      
60     return quickSort(left)+quickSort(right)
61     
62 print quickSort([5,67,99,123,56,1,7,2,3,0])
63 # bubbleSort([5,67,99,123,56,1,7,2,3,0])
View Code

 

posted @ 2018-12-15 09:35  一叶知秋WDZY  阅读(73)  评论(0)    收藏  举报