#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--; //小于等于枢轴的在low的左端
nums[low]=nums[high];
while(low<high&&nums[low]<=tmp) low++; //大于等于枢轴的在high的右端
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;
}
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_47511190/article/details/120016337
内容来源于网络,如有侵权,请联系作者删除!