算法思路:
1链瓦、找到一個關(guān)鍵值(一般是第一個或者中值),將小于關(guān)鍵值的序列放在左邊熟妓,大于關(guān)鍵值的序列放在右邊
2雪猪、將左右兩個序列分別使用1過程(遞推過程)
3、最終各個序列退化至單個元素起愈,遞歸開始回歸只恨,整個序列有序
C++
//核心代碼
template <typename T>
//給關(guān)鍵值找到合適的位置,并返回所在的位置
int partition(T arr[],int low,int high){
//選取第一個值作為關(guān)鍵值(中軸值)
int keyValue = arr[low];
//j為最終的中軸索引值
int j = low;
for (int i = low + 1; i <= high; i++) {
if(arr[i] < keyValue){
swap(&arr[++j], &arr[i]);
}
}
swap(&arr[low], &arr[j]);
return j;
}
template <typename T>
void quickSort(T arr[],int low,int high){
//回歸條件
if (high>low) {
//1步驟
int q = partition(arr, low,high);
//2步驟
quickSort(arr, low, q-1);
quickSort(arr, q+1, high);
}
}