void swap(int *a,int *b)
{
int temp=*a;
*a=*b;
*b=temp;
}
void quicksort(int k[],int s,int t)
{
int i,j=t+1;
i=s;
while(1)
{
do i++;
while(!(k[i]>=k[s]||i==t));
do j--;
while(!(k[j]<=k[s]||j==s));
if(i<j)
swap(&k[i],&k[j]);
else
break;
}
swap(&k[s],&k[j]);
quicksort(k,s,j-1);
quicksort(k,j+1,t);
}
int main()
{
int i;
int k[10]={2,5,6,3,7,8,0,9,12,1};
for(i=0;i<10;i++)
{
printf("%d ",k[i]);
}
printf("\n");
quicksort(k,0,9);
for(i=0;i<10;i++)
printf("%d ",k[i]);
}
为什么第二个循环搞不出来。显示不出排序后的结果
#include <stdio.h>
void swap(int *a,int *b)
{
int temp=*a;
*a=*b;
*b=temp;
}
void quicksort(int k[],int s,int t)
{
int i,j=t+1;
i=s;
if(s>=t) return; //增加
while(1)
{
do i++;
while(!(k[i]>=k[s]||i==t));
do j--;
while(!(k[j]<=k[s]||j==s));
if(i<j)
swap(&k[i],&k[j]);
else
break;
}
swap(&k[s],&k[j]);
quicksort(k,s,j-1);
quicksort(k,j+1,t);
}
int main()
{
int i;
int k[10]={2,5,6,3,7,8,0,9,12,1};
for(i=0;i<10;i++)
{
printf("%d ",k[i]);
}
printf("\n");
quicksort(k,0,9);
for(i=0;i<10;i++)
printf("%d ",k[i]);
printf("\n");
}
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。