快速排序

来源:互联网 发布:java基础入门课后题 编辑:程序博客网 时间:2024/04/28 16:52

#include<iostream>using namespace std;int a[100],n;void swap(int *a,int *b){int t;t=*a;*a=*b;*b=t; } void Qsort(int *a,int left,int right){int i,j;if(left<right){i=left;j=right+1;do{do i++;while(a[i]<a[left]);//i指针从左往右找到第一个大于或等于分割元素的元素 do j--;while(a[j]>a[left]);//j指针从右往左找到第一个小于或等于分割元素的元素 if(i<j)swap(a[i],a[j]);//如果i<j则交换元素继续进行 }while(i<j);swap(a[left],a[j]);//如果i》j换分割元素a[left]和a[j]的位置 Qsort(a,left,j-1);Qsort(a,j+1,right);} }  void quciksort(int *a,int n) {Qsort(a,0,n-1);}int main(){cin>>n;for(int i=0;i<n;i++)cin>>a[i];quciksort(a,n);for(int i=0;i<n;i++)cout<<a[i]<<" ";cout<<endl;return 0;}  


0 0
原创粉丝点击