经典快排:
把目标值放在中间,左边都是小于等于它的,右边是大于它的值、
#include <iostream>
using namespace std;
int quicksort(int* arr,int L,int R);
void swap(int* arr, int i, int j);
void show(int* arr, int length);
int main(){
int arr[] = {1,5,8,7,2,6};
cout <<"目标值所在下标"<< quicksort(arr,0,5)<<endl;;
show(arr,6);
return 0;
}
int quicksort(int* arr,int L,int R){
int tmp = arr[R];
int p = L-1;
for(int i=0;i<=R;i++){
if(arr[i] <= tmp){
swap(arr,++p,i);
}
}
//返回目标值所在的下标;
return p;
// int i = 0;
// while(i<length){
// if(arr[i] > tmp){
// i++;
// continue;
// }
// swap(arr, p+1, i);
// p++;
// i++;
// }
}
void swap(int* arr, int i, int j){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
void show(int* arr, int length){
int i=0;
while(i<length){
cout << arr[i]<<endl;
i++;
}
}