直接上**:
#快速排序
#coding: utf-8
defquicksort(a,left,right):
if(leftmid =partition(a,left,right)
quicksort(a,left,mid-1)
quicksort(a,mid+1,right)
defpartition(a,left,right):
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+1a[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
while
(true):
try:
s = input("
輸入待排序陣列:\n
") #
待排陣列
l =s.split()
a = [int(t) for t in
l] quicksort(a,0,len(a)-1)
print ("
排序後:")
for item in
a:
print(item,end='')
print("\n"
)
except
:
break
隨機快速排序:
#隨機快速排序
#coding: utf-8
import
random
defrandom_quicksort(a,left,right):
if(leftmid =random_partition(a,left,right)
random_quicksort(a,left,mid-1)
random_quicksort(a,mid+1,right)
defrandom_partition(a,left,right):
t = random.randint(left,right) #
生成[left,right]之間的乙個隨機數
a[t],a[right] =a[right],a[t]
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+1a[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
while
(true):
try:
s = input("
輸入待排序陣列:\n
") #
待排陣列
l =s.split()
a = [int(t) for t in
l] random_quicksort(a,0,len(a)-1)
print ("
排序後:")
for item in
a:
print(item,end='')
print("\n"
)
except
:
break
快速排序和隨機快速排序
嚴書上的快排是以最左邊元素為樞紐的,如下 include include using namespace std intpartition int a,int left,int right a left p return left void quicksort int a,int left,int ...
隨機快速排序C 實現
傳統的隨機快速排序,是選定乙個數,然後以這個數為標桿,分為小於等於 標桿 區和大於 標桿 區。改進的快速排序,分為,小於區,等於區和大於區。這個劃分的過程用partition函式實現。具體請看 ifndef quicksort h define quicksort h include include...
python 實現氣泡排序和快速排序
11.28 學習筆記 設定flag在一定程度上優化了氣泡排序 實現氣泡排序 氣泡排序就是相鄰兩個數比較,大的後移,然後一輪過去後,大的會在最後乙個位置 defbubble sort list for i in range 0 len list 輪數 flag false for j in range...