def
partition_desc
(a, p, r):
if r>p:
#用來指示i = p-1
#用來移動遍歷
j = p
#主元素
x = a[r]
#遍歷[p, r-1]區間
for j in range(p, r):
if a[j]>=x:
#移動分割槽指示游標, 增加乙個位置
i += 1
#在分割槽最後乙個位置加入分割槽元素
a[i],a[j] = a[j],a[i]
#現在, 任意e1∈a[p, i], e1>=x; 任意e1∈a[p, r-1], e1#交換a[i+1]和a[r], 產生新的過程區域
a[i+1],a[r] = a[r],a[i+1]
q = i + 1
return a, q
else:
return a, p
defquick_sort_desc
(a, p, r):
a, q = partition_desc(a, p, r)
if p1)
a = quick_sort_desc(a, q+1, r)
return a
else:
return a
a = [2,3,12,11]
a = quick_sort_desc(a, 0, len(a)-1)
print(a)
c 降序排序
排序可選sort 但使用sort 時要有 include,sort 只能公升序排序。要想使用降序排序,我用過的有三種方法。假設有vectora,對a中的數進行降序排列。1.sort a.rbegin a.rend 2.sort a.begin a.end greater 使用greater 時要有 ...
python快速排序排序 python快速排序
import random def rand n for i in range n yield random.randint 0,1000 建立乙個隨機數列表 def createlist n lists for i in rand n return lists 挖坑法快速排序 def quick ...
氣泡排序公升序降序
氣泡排序 時間複雜度 o n2 實 質 把小 大 的元素往前 後 調 氣泡排序演算法的原理如下 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次...