读书人

Quicksort 写了一个下午

发布时间: 2012-12-27 10:17:10 作者: rapoo

Quicksort 写了一个上午


#include <stdio.h>
void quicksort(int a[],int left, int right);
main(){
int a[]={9, 6, 7, 3, 2, 19, 5, 8, 3, 9};
int i;
printf("input is:\n");
for(i=0;i<10;i++){
printf("%3d\n",a[i]);
}

quicksort(a,0,9);
printf("Quick Sorting:\n");
for(i=0;i<10;i++){
printf("%3d\n",a[i]);
}


}

void quicksort(int a[],int left, int right){

int pvoit;
int pvoit_index;
int p;
int mid;

if(left>=right){
return ;
}

pvoit_index=left;
pvoit=a[pvoit_index];
mid=left;//undefined.

for(p=left+1; p<right+1;p++){
if(a[p]< pvoit){
//swap a[mid+1] and a[p]
if(mid!=p-1){
a[mid+1]=a[mid+1]^a[p];
a[p]=a[mid+1]^a[p];
a[mid+1]=a[mid+1]^a[p];
}
mid++;
}
}

//swap a[pvoit_index] and a[mid]
if(mid!=pvoit_index){
//swap
a[mid]=a[mid]^a[pvoit_index];
a[pvoit_index]=a[mid]^a[pvoit_index];
a[mid]=a[mid]^a[pvoit_index];
}

//recursive
quicksort(a,left,mid-1);
quicksort(a,mid+1,right);
}


[解决办法]
swap两个数写得比较有特色……
[解决办法]
最近我也在学快排,哈哈。
[解决办法]
Life is short, I use Python!

def quick_sort(lst):
if 2 > len(lst):
return lst

return quick_sort([c for c in lst[1:] if c <= lst[0]]) + lst[:1] + quick_sort([c for c in lst if c > lst[0]])

读书人网 >软件架构设计

热点推荐