本文實例講述了Python實現桶排序與快速排序算法結合應用的方法。分享給大家供大家參考,具體如下:
#-*- coding: UTF-8 -*-import numpy as npfrom QuickSort import QuickSortdef 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 += 1if __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:
#-*- coding: UTF-8 -*-import numpy as npdef Partition(a, i, j): x = a[i] #將數組的第一個元素作為初始基準位置 p = i #同時記錄下該元素的位置 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]進行交換 p = i #得到分隔位置 return pdef 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 "---------------------------------------------------------------"
程序運行結果:

希望本文所述對大家Python程序設計有所幫助。
新聞熱點
疑難解答