快速排序 quick sort

2021-10-10 05:21:41 字數 865 閱讀 4861

取 left 為 key,然後從右【左】兩邊迴圈對比,直到 j(右) 比 key 小【或 i(左) 比 key 大】,將 i 和 j 的值進行交換(在這裡沒另外定義乙個變數,利用key來實現 i 和 j 的交換,因此需要從右邊開始判斷)

直到 i 和 j 相等時退出迴圈,在利用遞迴進行 1 的操作

#include

void

sort

(int

*data,

int left,

int right)

data[i]

= data[j]

;while

(i < j && key >= data[i]

) data[j]

= data[i];}

data[i]

= key;

sort

(data, left, i -1)

;sort

(data, i +

1, right);}

void

quick_sort

(int

*data,

int length)

intmain

(void);

int length =

sizeof

(data)

/sizeof

(data[0]

);int i;

quick_sort

(data, length)

;for

(i =

0; i < length; i++

)printf

("\n");

return0;

}

快速排序 QuickSort

快速排序通常用於排序的最佳的使用選擇,其期望執行時間為 o nlgn 能夠進行就地排序。最壞執行時間為 o n 2 演算法描述 分解 divide 陣列 a beg end 被劃分為兩個子陣列 a beg mid 1 和a mid 1 end 使得a beg mid 1 中的資料都小於 a mid ...

快速排序 quicksort

快速排序 quicksort 是分治法的典型例子,它的主要思想是將乙個待排序的陣列以陣列的某乙個元素x為軸,使這個軸的左側元素都比x大,而右側元素都比x小 從大到小排序 然後以這個x在變換後陣列的位置i分為左右兩個子陣列,再分別進行快速排序,直到子陣列中只有乙個元素為止。快速排序演算法如下 void...

快速排序 QuickSort

1,void quicksort int a,int low,int high 這個函式是排序的遞迴部分,mid就是已經確定的基準元素的位置。2,int partition int a,int low,int high 這個函式幹了兩件事 1 挑出來乙個基準元素 這裡選的是最後乙個作為基準 找它的正...