这个快速排序的错误在哪里?
#include<stdio.h>
#include<stdlib.h>
#define N 5
void qusort(int s[],int start,int end)
{
int i,j;
i=start;
j=end;
s[0]=s[start];
while(i<j) {
while(i<j&&s[0]<=s[j]) {
j--;
}
if(i<j) {
s[i]=s[j];
i++;
}
while(i<j&&s[i]<=s[0]) {
i++;
}
if(i<j) {
s[j]=s[i];
j--;
}
s[i]=s[0];
if(start<i) {
qusort(s,start,j-1);
}
if(j<end) {
qusort(s,i+1,end);
}
}
}
int main(int argc,char **argv)
{
int arr[N];
int i;
printf("...input the nunber...\n");
for(i=0;i<N;i++) {
scanf("%d",&arr[i]);
}
qusort(arr,0,4);
printf("the sort numbers:\n");
for(i=0;i<N;i++) {
printf("%5d",arr[i]);
}
printf("\n");
return 0;
}
[解决办法]
排序算法总结,博文有详细描述,希望对你有所帮助
http://blog.csdn.net/furney/article/details/7107145