- 论坛徽章:
- 0
|
- #include "istream.h"
- #include "ostream.h"
- void qsort(int[],int,int);
- void main()
- {
- int a[]={6,2,4,5,1,3};
- int len=sizeof(a)/sizeof(int);
- qsort(a,0,len-1);
- for(int i=0;i<len;i++)
- cout<<a[i];
- }
- void qsort(int a[],int left,int right)
- {
- int pivot,l,r,temp;
- l=left;
- r=right;
- pivot=a[(left+right)/2];
-
- while(l<r)
- {
- while(a[l]<pivot) ++l;
- while(a[r]>;pivot) --r;
- if(l>;=r) break;
-
- temp=a[l];
- a[l]=a[r];
- a[r]=temp;
- ++l; --r;
- for(int i=0;i<6;i++)
- {
- cout<<a[i]<<" ";
- }
- cout<<endl;
- }
- if(l==r) l++;
- if(left<r) qsort(a,left,l-1);
- if(l<right) qsort(a,r+1,right);
- }
复制代码
在这个程序中对于最后两句有点不明白,
在这个程序中left=0,l和r是数组的两部分,也就是说,left<r恒成立,那么最后一句根本不会被执行,(不知道我说得对不对).那么这一句是不是可以去掉? |
|