c++手撕快排
c++
#include <bits/stdc++.h>
using namespace std;
void quickSort(int arr[], int low, int high) {
if (low < high) {
int l = low, h = high;
//把arr[l]拿出来,这时候l指向的位置为空。
int temp = arr[l];
while(l<h){
//从右往左找比temp小的数,放到l的位置
while(l<h && arr[h]>=temp)
h--;
if(l<h){
arr[l]=arr[h];
}
//从左往右找比temp大的数,放到h的位置
while(l<h && arr[l]<=temp)
l++;
if(l<h){
arr[h]=arr[l];
}
}
//当l==h时,此时l的位置为空,把temp放到l的位置
arr[l]=temp;
//递归调用
quickSort(arr, low, l-1);
quickSort(arr, l+1, high);
}
}
int main(){
int arr[] = {9, 6, 6, 3, 4};
quickSort(arr, 0, 4);
for(int i=0; i<5; i++){
cout << arr[i] << " ";
}
cout << endl;
}