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...
排序演算法(五) 快速排序
快速排序是一種效率很高的排序演算法,也是我們使用最多的一種排序演算法。快速排序原理 兩個指標分別指向陣列兩頭元素,將陣列第乙個元素儲存下來,作為基準數,兩個指標開始向中間移動,先移動陣列尾部指標,直到發現所指元素比基準數小時,將這時候所指向的數賦值給陣列頭部指標指向的位置,然後尾部指標停止移動,頭部...
排序演算法五 快速排序
取陣列最中間的那個數為基數 取哪乙個數為基數都可以,取中間的只是為了好理解 在左邊找乙個比基數大的數,在右邊找乙個比基數小的數,如果找到就交換兩個數的位置,交換過後再向下尋找,直到左邊的角標大於等於右邊則退出,一輪排序後,基數的左邊一定都是比基數小的,基數的右邊一定是比基數大的,注意 基數不一定還在...