自己些的一个,快速排序,但是发现一个问题,求助高手帮忙解决
这是我些的一个快速排序,但是发现如果出现相同数就进入死循环了..... 高手帮忙指出错误所在.... 谢谢#include <stdio.h>
#define N 10
void change(int *p,int *q)
{
int z;
z=*p;
*p=*q;
*q=z;
}
int fast(int * b,int left,int right)
{
int l=left,r=right;
int point=left;
while(l<r)
{
while(b[point]<b[r]) r--;
change(&b[point],&b[r]);
point=r;
while(b[point]>b[l]) l++;
change(&b[point],&b[l]);
point=l;
if(r==l)
{
fast(b,left,l);
fast(b,r+1,right);
}
}
}
int outs(int *a,int n)
{
int i;
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
}
int randin(int *p,int n)
{
int i;
srand(time(NULL));
for(i=0;i<n;i++)
{
p[i]=rand()%100;
}
}
int main()
{
int a[N];
randin(a,N);
fast(a,0,N-1);
outs(a,N);
}
fast.c.rar
(749 Bytes)