快速排序

来源:互联网 发布:大数据安全分析 编辑:程序博客网 时间:2024/05/18 01:58
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;} 


0 0