求修改快速排序的代码

#include
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");
}

递归快速排序:
http://blog.csdn.net/howin45/article/details/5603044
http://blog.chinaunix.net/uid-24219701-id-346203.html