算法笔记-快速排序
#include<cstdio>
#include<bits/stdc++.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include <vector>
#include <set>
#include <cmath>
#include<ctime>
using namespace std;
typedef long long ll;
const double eps = 1e-5;
const double PI = acos(-1.0);
void printA(int a[]){
for(int i = 0;i < 7;i++){
cout<<a[i]<<" ";
}
cout<<endl;
}
int partition(int A[],int left,int right){
int p = round(1.0*rand()/RAND_MAX*(right-left) + left);
int temp = A[left]; //使用随机数避免最坏情况
while(left<right){
while(left < right && A[right] > temp) right--;
A[left] = A[right];
while(left < right && A[left] < temp) left++;
A[right] = A[left];
}
A[left] = temp;
return left;
}
void quicksort(int A[],int left,int right){
if(left < right){
int pos = partition(A,left,right);
quicksort(A,left,pos-1);
quicksort(A,pos+1,right);
}
}
int main(){
//加快cin cout 时间
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int a[] = {29,12,33,57,64,27,18};
int len = sizeof(a) / sizeof(a[0]);
quicksort(a,0,len-1);
printA(a);
// 输出运行时间
cout << "The run time is: " <<(double)clock() / CLOCKS_PER_SEC << "s" << endl;
return 0;
}