重寫排序演算法之一

2021-06-13 21:59:46 字數 764 閱讀 4418

1.快速排序

def partition(a,p,q):

x=a[p];

i=p;

for j in xrange(p+1,q+1):

if a[j]=0 and a[j]>key :

a[j+1]=a[j];

j-=1;

a[j+1]=key;

a=[32,5,46,57,68,34,5,768,3,234,123,35,2,1];

insertsort(a);

print a;

3.歸併排序def merge(a,b,p,r,q):

i=p;

j=r+1;

k=0;

while i<=r and j<=q:

if a[i]>a[j]:

b[k]=a[j];

j+=1;

k+=1;

else:

b[k]=a[i];

i+=1;

k+=1;

if i<=r:

while i<=r:

b[k]=a[i];

k+=1;

i+=1;

if j<=q:

while j<=q:

b[k]=a[j];

k+=1;

j+=1;

for x in range(0,k):

a[p+x]=b[x];

def mergesort(a,p,q,b):

if p

演算法 排序之一 氣泡排序

如果資料按照一定的順序進行排序,資料處理的效率將顯著的提高。演算法是程式設計的精髓,乙個高效 而合適的演算法能極大的減少時間消耗與空間消耗,提到 合適 是因為沒有哪個演算法可以在所有情況下都表現出色,同樣是排序,在不同資料規模下各種排序演算法有不同的效能表現,選擇合適的解決演算法的才能最大限度地提高...

排序演算法之一 快速排序

1 先從數列中取出乙個數作為基準數。2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。3 再對左右區間重複第二步,直到各區間只有乙個數。1 預排序的輸入非常常見,因此不要選擇第乙個數作為基準數 2 隨機數的生成也較為昂貴 3 採用三數中值分割法 取左中右三個元素的中值作...

基本排序演算法 之一 氣泡排序

templatevoid bubblesort t arr,int len 未改進的氣泡排序,最好,最壞以及平均情況下的時間複雜度均為o n 2 排序過程可能在k k n 1 次外迴圈後已經達到有序狀態,但該演算法仍然會繼續比較相鄰元素,直到n 1次外迴圈結束。基於以上考慮,提出改進的氣泡排序演算法...