随机生成从大到小排序python_随机快速排序(使用Python描述)
title
代碼復(fù)制自隨機快速排序的實現(xiàn)-夜雨最萌.和快速排序一樣呀😂
隨機快速排序與快速排序的思路一樣,差異就是取主元之前,隨機快速排序多了一個步驟:而隨機快速排序是隨機取得一個元素,但是又會與最后一個元素交換位置.取得主元的下標位置實際上還是最后一個下標.快速排序是習(xí)慣取得最后一個元素.
此算法特性
此算法適用場景
代碼實現(xiàn)
import random
def random_quicksort(a,left,right):
if(left
mid = random_partition(a,left,right)
random_quicksort(a,left,mid-1)
random_quicksort(a,mid+1,right)
def random_partition(a,left,right):
########################################
t = random.randint(left,right) #生成[left,right]之間的一個隨機數(shù)
a[t],a[right] = a[right],a[t]
########################################
# 相比經(jīng)典隨機快速排序,增加了上面兩行代碼
x = a[right]
i = left-1 #初始i指向一個空,保證0到i都小于等于 x
for j in range(left,right): #j用來尋找比x小的,找到就和i+1交換,保證i之前的都小于等于x
if(a[j]<=x):
i = i+1
a[i],a[j] = a[j],a[i]
a[i+1],a[right] = a[right],a[i+1] #0到i 都小于等于x ,所以x的最終位置就是i+1
return i+1
exam_list = [8,6,15,14,13]
random_quicksort(exam_list,0,len(exam_list)-1)
print(exam_list)
參考
總結(jié)
以上是生活随笔為你收集整理的随机生成从大到小排序python_随机快速排序(使用Python描述)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 主君的太阳剧情介绍
- 下一篇: python datatime 平均值_