题目是输入数量n,然后输入n个数,最后进行排序。
核心思想是每次找中间值后在俩边进行重复操作。
#include<iostream>
using namespace std;
int quickSearch(int a[],int left,int right){
int i = left, j=right,k=a[left]; //k初值定数组第一个数,k作为的是中间量
while(i<j){
while(i<j&&a[j]>k) j--; //左扫描
if(i<j){
swap(a[i++],a[j]);
}
while(i<j&&a[i]<=k) i++; //右扫描
if(i<j){
swap(a[i],a[j--]);
}
}
return i; //返回中间值
}
void quickSort(int a[],int left,int right){
if(left<right){
int mid = quickSearch(a,left,right); //找中间值
quickSort(a,left,mid-1); //左区域
quickSort(a,mid+1,right); //右区域
}
}
int main(){
int a[1000];
int n;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
}
quickSort(a,0,n-1);
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
}
return 0;
}
样例