快速排序-改进1
2013-08-09 16:36
246 查看
void quickSort(int a[],int l,int r)
{//使用数组模拟栈
int i;
int b[100] = {0};
int j = 0;
int k = r;
b[j++] = r;
b[j++] = l;
while (j >= 0)
{
l = b[--j];
r = b[--j];
if ((l >= r)||(j <
0)||(r > k)||(l > k))//改进判断条件
{
continue;
}
i =
partition(a,l, r);
if (i-1 > r-i)
{
b[j++] = i-1;
b[j++] = l;
b[j++] = r;
b[j++] = i+1;
}
else
{
b[j++] = r;
b[j++] = i+1;
b[j++] = i-1;
b[j++] = l;
}
}
}
{//使用数组模拟栈
int i;
int b[100] = {0};
int j = 0;
int k = r;
b[j++] = r;
b[j++] = l;
while (j >= 0)
{
l = b[--j];
r = b[--j];
if ((l >= r)||(j <
0)||(r > k)||(l > k))//改进判断条件
{
continue;
}
i =
partition(a,l, r);
if (i-1 > r-i)
{
b[j++] = i-1;
b[j++] = l;
b[j++] = r;
b[j++] = i+1;
}
else
{
b[j++] = r;
b[j++] = i+1;
b[j++] = i-1;
b[j++] = l;
}
}
}