//快速排序
int pation(int data[], int x, int y)
{
int n=data[x], i=x+1, j=y, temp;
while(1)
{
while(data[i]<n && i < y) ++i;
while(data[j]>n && j > x) --j;
if(i>=j) break;
temp=data[i]; data[i]=data[j]; data[j]=temp;
}
data[x]=data[j];
data[j]=n;
return j;
}
void main()
{
int sortData[5] = {2,5, 3, 1, 8};
pation(sortData, 0, 4);
for(int i = 0; i < 5; i++)
{
cout<<"The result is "<<sortData[i]<<endl;
}
}
上述的算法修正如下:
//快速排序
int pation(int data[], int x, int y)
{
int n = data[x], i = x + 1, j = y, temp, nIndex;
while(true)
{
while ((data[i] < n) && (i < y)) ++i;
while ((data[j] > n) && (j > x)) --j;
if (i >= j) break;
temp = data[i]; data[i] = data[j]; data[j] = temp;
}
data[x] = data[j];
data[j] = n;
if (x < j - 1) pation(data, x, j - 1);
if (j + 1 < y) pation(data, j + 1, y);
return j;
}