C 演算法 五 快速排序

2021-05-23 20:43:45 字數 535 閱讀 8135

using system;

namespace quicksorter

public void sort(int list,int low,int high)

mid=(low+high)>>1;

pivot=list[mid];

swap(ref list[low],ref list[mid]);

l=low+1;

r=high;

dowhile(llist[low]=list[r];

list[r]=pivot;

if(low+1sort(list,low,r-1);

if(r+1sort(list,r+1,high);}}

public class mainclass

;quicksorter q=new quicksorter();

q.sort(iarrary,0,13);

for(int m=0;m<=13;m++)

console.writeline("",iarrary[m]); }}

}

排序演算法(五) 快速排序

在陣列中選取乙個數作為基準值,進行乙個partition過程,將小於該數的放在左邊,大於的放在右邊,等於的放在中間,再對左右分別進行該操作。時間複雜度 每次partition可以將乙個數字位置確定,將陣列劃分為兩部分,因此想要有序,理想情況每次剛好兩邊大小一樣,則一共需要logn次partition...

排序演算法(五) 快速排序

快速排序是一種效率很高的排序演算法,也是我們使用最多的一種排序演算法。快速排序原理 兩個指標分別指向陣列兩頭元素,將陣列第乙個元素儲存下來,作為基準數,兩個指標開始向中間移動,先移動陣列尾部指標,直到發現所指元素比基準數小時,將這時候所指向的數賦值給陣列頭部指標指向的位置,然後尾部指標停止移動,頭部...

排序演算法五 快速排序

取陣列最中間的那個數為基數 取哪乙個數為基數都可以,取中間的只是為了好理解 在左邊找乙個比基數大的數,在右邊找乙個比基數小的數,如果找到就交換兩個數的位置,交換過後再向下尋找,直到左邊的角標大於等於右邊則退出,一輪排序後,基數的左邊一定都是比基數小的,基數的右邊一定是比基數大的,注意 基數不一定還在...