- 论坛徽章:
- 0
|
原帖由 chenchanjob 于 2009-4-8 15:55 发表 ![]()
我自己复习基础算法的时候写了个快速排序的代码,但总是进入死循环,帮我看看怎么回事吧,谢谢!
我的代码:
void q_sort(int *arr, int low, int high){
int i;
while(low < high){
...
我大概修改了下你的代码,这样应该可以了,你看看!
#include<stdio.h>
void q_sort(int *arr, int low, int high){
int i;
i = partion(arr, low, high);
printf("%d\n",i);
if(low <i-1){
q_sort(arr, low, i - 1);
}
if(high>i+1){
q_sort(arr, i + 1, high);
}
}
int partion(int *arr, int low, int high){
printf("low and high are %d, %d\n", low, high);
int temp = arr[low];
while(low < high){
while(low < high && arr[high] >= temp){
high--;
}
arr[low] = arr[high];
while(low < high && arr[low] <= temp){
low++;
}
arr[high] = arr[low];
}
arr[low] = temp;
printf("mid is %d\n", low);
return low;
}
int main(){
int index =0;
int arr[] = {49,38,65,97,76,13,27};
q_sort(arr,0,6);
for(index=0;index<7;i++){
printf("%d", arr[index]);
printf("\n");
}
}
[ 本帖最后由 bladmin 于 2009-4-9 10:01 编辑 ] |
|