資料結構和演算法 快速排序

2021-09-05 12:51:50 字數 463 閱讀 7910

#include

int a[101],n;

void quick_sort(int left,int right)

{int i,j,t,temp;

if(left>=right)

return;

temp=a[left];

i=left;

j=right;

//在哨兵i,j 會合之前,將右側找到的小數與左邊找到的大數 互換

while(i!=j)

{ while(a[j]>=temp&&i>j)//在沒有找到小數前 (j--) 繼續 「往下」找

j--;

while(a[i]<=temp&&i>j)//在沒有找到大數前(i++) 繼續「往上」找

i++;

//在右側找到乙個小數且左側找到乙個大數後,將兩個數的位置對調

if(iint main()

{

資料結構定義和演算法 排序 快速排序

如果要排序下標為p到r之間的一組陣列 選擇p到r之間任意乙個元素做pivot 分割槽點 將小於pivot的元素放在左邊,大於pivot的放在右邊,pivot放在中間。這樣陣列就被分為三個部分,小於pivot的區間a p,q 1 等於pivot的區間a q 大於pivot的區間a q 1,r 根據分治...

資料結構 排序演算法 快速排序

演算法描述 快速排序是由東尼 霍爾所發展的一種排序演算法。在平均狀況下,排序 n 個專案要 n log n 次比較。在最壞狀況下則需要 n2 次比較,但這種狀況並不常見。事實上,快速排序通常明顯比其他 n log n 演算法更快,因為它的內部迴圈 inner loop 可以在大部分的架構上很有效率地...

資料結構 快速排序演算法

一趟快速排序的演算法是 1 設定兩個變數i j,排序開始的時候 i 0,j n 1 2 以第乙個陣列元素作為關鍵資料,賦值給key,即key a 0 3 從j開始向前搜尋,即由後開始向前搜尋 j 找到第乙個小於key的值a j 將a j 和a i 互換 4 從i開始向後搜尋,即由前開始向後搜尋 i ...