- 论坛徽章:
- 0
|
本帖最后由 bjutslg 于 2014-08-18 19:55 编辑
自己写的一个快排 有点问题求指教- #include <iostream>
- using namespace std;
- void Ksort(int *a,int left,int right,int len)
- {
- if(len==0)
- return ;
- int r=right;
- int data=a[left];
- while(left<right)
- {
- while(a[right]>data&&left<right)
- right--;
- if(left<right)
- a[left++]=a[right];
- while(a[left]<data&&left<right)
- left++;
- if(left<right)
- a[right--]=a[left];
- }
- a[left]=data;
- Ksort(a,0,left-1,left-0);
- Ksort(a,left+1,r,r-left);
- // Ksort(a,left+1,len-1,len-1-left); //为什么用上面那句就可以,用这个就不行呢 每次快排的右端点下表不就是本次快排的长度减一么??
- }
- void Pnum(int *a,int len)
- {
- int i=0;
- for(i;i<len;i++)
- cout<<a[i]<<" ";
- cout<<endl;
- }
- int main()
- {
- int a[]={5,9,3,2};
- Pnum(a,4);
- Ksort(a,0,3,4);
- Pnum(a,4);
- return 0;
-
- }
复制代码 |
|