算法稳定性:不稳定
复杂度分析:
- 最好空间复杂度:O(logn)
- 最坏空间复杂度:O(n)
- 最好时间复杂度:O(n*logn)
- 平均时间复杂度:O(n*logn)
- 最坏时间复杂度(全部有序):O(n^2)
实现代码:
#include<iostream>
using namespace std;
int part(int *nums,int low,int high){
int tmp=nums[low];
while(low<high){
while(low<high&&nums[high]>=tmp) high--;
nums[low]=nums[high];
while(low<high&&nums[low]<=tmp) low++;
nums[high]=nums[low];
}
nums[low]=tmp;
return low;
}
void QuickSort(int *nums,int low,int high){
if(low<high){
int mid=part(nums,low,high);
QuickSort(nums,low,mid-1);
QuickSort(nums,mid+1,high);
}
}
int main(){
int n;
cin>>n;
int nums[n];
for(int i=0;i<n;i++)
cin>>nums[i];
QuickSort(nums,0,n-1);
cout<<"排序后的序列为:";
for(int i=0;i<n;i++)
cout<<nums[i]<<" ";
return 0;
}
运行结果: