快速排序算法C++代码

时间:2025-04-18 18:21:29
#include <iostream> using namespace std; void quicksort(int a[], int left, int right) { int i = left, j = right, temp = a[right]; //temp中存的就是基准数(轴) if(left >= right) return; while(i != j) { //顺序很重要,轴最左则先右后左,轴最右则先左后右 while(a[i] <= temp && i < j) i++; while(a[j] >= temp && i < j) j--; if(i < j){ int t = a[i]; a[i] = a[j]; a[j] = t; } } //最终将基准数归位 a[right] = a[i]; a[i] = temp; quicksort(a, left, i-1); //继续处理左边的 quicksort(a, i+1, right); //继续处理右边的 } int main(){ int a[] = {72,6,57,88,85,42,83,73,48,60,60}; quicksort(a, 0, sizeof(a) / sizeof(a[0]) - 1); for(int i = 0; i < sizeof(a) / sizeof(a[0]); i++) cout << a[i] << " "; return 0; }