本文實(shí)例講述了Python實(shí)現(xiàn)桶排序與快速排序算法結(jié)合應(yīng)用的方法。分享給大家供大家參考,具體如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
#-*- coding: UTF-8 -*- import numpy as np from QuickSort import QuickSort def BucketSort(a, n): barrel = {} for i in xrange ( 0 ,n): barrel.setdefault(i, []) min = np. min (a) max = np. max (a) for x in a: for i in xrange ( 0 ,n - 1 ): if x > = min + i * ( max - min ) / n and x < min + (i + 1 ) * ( max - min ) / n: barrel[i].append(x) elif i = = n - 2 and x > = min + (i + 1 ) * ( max - min ) / n: barrel[i + 1 ].append(x) k = 0 for i in xrange ( 0 ,n): if len (barrel[i]) ! = 0 : arr = np.array(barrel[i]) QuickSort(arr, 0 , len (barrel[i]) - 1 ) for x in arr: a[k] = x k + = 1 if __name__ = = '__main__' : a = np.random.randint( 0 , 100 , size = 10 ) print "Before sorting..." print "---------------------------------------------------------------" print a print "---------------------------------------------------------------" BucketSort(a, 10 ) print "After sorting..." print "---------------------------------------------------------------" print a print "---------------------------------------------------------------" |
快速排序QuickSort:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#-*- coding: UTF-8 -*- import numpy as np def Partition(a, i, j): x = a[i] #將數(shù)組的第一個(gè)元素作為初始基準(zhǔn)位置 p = i #同時(shí)記錄下該元素的位置 while i < j: while i < j and a[j] > = x: j - = 1 while i < j and a[i] < = x: i + = 1 if i ! = j: a[i], a[j] = a[j], a[i] #交換a[i]與a[j] a[p], a[i] = a[i], a[p] #將a[p]與a[i]進(jìn)行交換 p = i #得到分隔位置 return p def QuickSort(a, i, j): if i < j: p = Partition(a, i, j) QuickSort(a, i, p - 1 ) QuickSort (a, p + 1 , j) if __name__ = = '__main__' : a = np.random.randint( 0 , 100 , size = 100 ) print "Before sorting..." print "---------------------------------------------------------------" print a print "---------------------------------------------------------------" QuickSort(a, 0 , a.size - 1 ) print "After sorting..." print "---------------------------------------------------------------" print a print "---------------------------------------------------------------" |
程序運(yùn)行結(jié)果:
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
原文鏈接:http://www.cnblogs.com/biaoyu/p/4837823.html