#include<bits/stdc++.h>
using namespace std;
int a[5] = {2,3,4,35,50};
void swap(int &a,int &b){
int temp = a;
a = b;
b = temp;
}
//选取数组最后一个元素作为基准
int partition(int arr[], int low, int high){
int pivot = arr[high];
int i = low;
for(int j=low;j<high;j++){
//双指针 i j
//i和j不断向后 判断当j指向的元素比i指向的元素小时 就交换数值
//同时两个指针向后移动 否则一直都是j向后移动 i不动
//这样i指向的元素一直都是比基准大的
if(arr[j] < pivot)
swap(arr[j],arr[i++]);
}
swap(arr[high],arr[i]);
return i;
}
//实现快速排序
void qsort(int arr[], int low, int high){
if(low < high){
//得到基准下标
int mid = partition(arr,low,high);
//递归分割区间
//基准左边的元素比基准小
qsort(arr,low,mid-1);
//基准右边的元素比基准大
qsort(arr,mid+1,high);
}
}
void quick_sort(int arr[], int len){
qsort(arr, 0, len - 1);
}
int main(){
quick_sort(a,5);
for(int i=0;i<5;i++) cout<<a[i]<<" ";
return 0;
}
快速排序(C++)
于 2022-01-24 14:45:14 首次发布