c语言
//快速排序 从小到大
#include <stdio.h>
int a[101];
void quicksort(int left, int right){//left和right是一组数组里面最左边和最右边的下标
int temp,t,i,j;
if(left > right) return ;
temp = a[left];//temp是基准值就是拿来比较的数
i = left;
j = right;
while(i != j){
while(a[j] >= temp && i < j) j--;//从最左边开始找比基准数大的数
while(a[i] <= temp && i < j) i++;//从最右边开始找比基准数小的数
//注意的要点是要从右开始找起
if(i < j){
t = a[i];
a[i] = a[j];
a[j] = t;
}//找到以后交换,直到i==j,最终让基准数归位
}
a[left] = a[i];
a[i] = temp;//找到新的基准数后与原来的基准数交换
quicksort(left,i-1);//继续处理左边的
quicksort(i+1,right);//继续处理右边的
return ;
}
int main(){
int i,n;
scanf("%d", &n);
for(i = 1;i <= n; i++){
scanf("%d",&a[i]);
}
quicksort(1,n);
for(i = 1;i <= n; i++){
printf("%d ",a[i]);
}
return 0;
}
c++
#include <iostream>
using namespace std;
int a[101];
void quicksort(int left,int right){
int i,j,temp,t;
if(left > right) return;
temp = a[left], i=left, j=right;
while(i != j){
while(a[j] >= temp && i < j) j--;
while(a[i] <= temp && i < j) i++;
if(i<j){
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
a[left]=a[i];
a[i]=temp;
quicksort(left,i-1);
quicksort(i+1,right);
return;
}
int main(){
int i,n;
cin>>n;
for(i = 1;i <= n; i++){
cin>>a[i];
}
quicksort(1,n);
for(i = 1;i <= n; i++){
cout<<a[i]<<" ";
}
cout<<endl;
return 0;
}