排序【未完待续】
快速排序
快排的思想主要在于每次划分确定一个元素的位置,使其左侧的元素均小于它,右侧的元素均大于它,再对左右两侧递归。
int partition(int a[], int low, int high)
{
int x = a[high]; // 先以最右侧作为枢轴
int j = low - 1; // j记录的是最后一个比枢轴小的位置
for (int i = low; i < high; i++)
{
if (a[i] < x) // 如果a[i]比枢轴小,就将j右移一个单位,并交换i和j所指元素
{
int temp;
j++;
temp = a[j];
a[j] = a[i];
a[i] = temp;
}
}
a[high] = a[j + 1]; // 循环结束后,从low到j的位置所对应的元素均小于枢轴,将第j+1个元素和枢轴位置交换
a[j + 1] = x;
return j + 1;
}
void quickSort(int a[], int low, int high)
{
if (low < high)
{
int middle = partition(a, low, high);
quickSort(a, low, middle - 1);
quickSort(a, middle + 1, high);
}
}
未完待续