//先排序后递归 左右边界要扩大1 #include<iostream> using namespace std; const int N=10010; int n,a[N]; void quick_sort(int l,int r,int a[]) { if(l>=r) return; int i=l-1,j=r+1,x=a[l];//下边do while操作会先加,并且每次交换后是自动加一的,所以左右边界要扩大1 while(i<j) { do i++;while(a[i]<x);//不能有等于 do j--;while(a[j]>x); if(i<j) //i跟j卡住之后,就交换 swap(a[i],a[j]); } quick_sort(l,j,a); quick_sort(j+1,r,a); } int main(void) { cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; quick_sort(1,n,a);//从两边开始 for(int i=1;i<=n;i++) cout<<a[i]<<' '; return 0; }
0.0分
1 人评分
【绝对值排序】 (C++代码)浏览:672 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:377 |
简单的a+b (C语言代码)浏览:599 |
三角形 (C++代码)记忆化搜索浏览:1234 |
用筛法求之N内的素数。 (C++代码)浏览:693 |
C语言训练-自由落体问题 (C语言代码)浏览:615 |
分解质因数 (C++代码)浏览:1482 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:527 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:420 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:739 |