//第一个参数为传入数组,第二个为开始值,最后一个为传入数组的最大下标
void myqsort(int a[],int nFirst,int nLast)
{
k++;
if(nFirst >= nLast)
{
return;
}
int key = a[nFirst];
int low = nFirst;
int j = nFirst;
int i = nLast;
for (; i> nFirst;i--)
{
if (a[i] < key)
{
a[nFirst] = a[i];
nFirst++;
for (j= nFirst; j< i;j++,nFirst++)
{
if (i<=j)
{
break;
}
if (a[j] > key)
{
a[i]=a[j];
break;
}
}
}
if (i<=j)
{
break;
}
}
a[i] = key;
myqsort(a, low, i-1);
myqsort(a, i+1, nLast);
}
//试例
int _tmain(int argc, _TCHAR* argv[])
{
int test_1[20];
int k=0;
for (k=0;k<20;k++)
{
test_1[k]=rand();
}
for (int i = 0; i<20; i++)
{
cout<<test_1[i]<<",";
}
cout<<endl;
myqsort(test_1,0,19);//调用快速排序
for (int i = 0; i<20; i++)
{
cout<<test_1[i]<<",";//打印结果
}
cout<<endl;
if (getchar())
{
return 0;
}
}
因为个人的输入关系,不太喜欢用while来做循环结构,自己用数据测试了一下,发现没什么问题,如果发现有不对的地方还望在博客下指出。