1)设置两个变量I、J,排序开始的时候 I=0,J=N-1;
例如:待排序的数组A的值分别是:(初始关键数据X:=49)
进行第一次交换后:
进行第二次交换后:
进行第三次交换后:
进行第四次交换后:
此时再执行第三不的时候就发现I=J,从而结束一躺快速排序,那么经过一躺快速排序之后:
即所有大于49的数全部在49的后面,所有小于49的数全部在49的前面。
初始状态
进行一次快速排序之后划分为
分别对前后两部分进行快速排序
--------------------- 参考代码 -------------------------
void startSort(int a[],int low,int high)
{
int i = low;
int j = high;
int temp = a[low];
if (low < high)
{
while (i < j)
{
while (a[j] >= temp && i < j)
{
j--;
}
a[i] = a[j];
while (a[i + 1] <= temp && i < j)
{
i++;
}
a[j] = a[i];
}
a[i] = temp;
startSort(a, low, i - 1);
startSort(a, j+1, high);
}
else
{
return;
}
}
void quickSort()
{
int arry[] = {49,38,65,97,76,13,27};
startSort(arry, 0, 6);
for(int i=0;i<7;i++)
{
printf("%d ",arry[i]);
}
printf("\n");
}