共计 454 个字符,预计需要花费 2 分钟才能阅读完成。
void exchange(int* x, int* y)
{
int temp = *x;
*x = *y;
*y = temp;
}
// 疾速排序是一种旧址排序,不须要调配新的数组空间
// start 和 end 为子数组的起始地位与终止地位
int partition(int *arr, int start, int end)
{
int temp;
// 获取主元
int key = arr[end];
// left 不存在,故将 i 去值为 start-1
int i = start - 1;
for (int j = start; j < end; j++)
{if (arr[j] <= key)
{
i = i + 1;
exchange(arr + i, arr + j);
}
}
exchange(arr + i + 1, arr + end);
return i + 1;
}
void quickSort(int *arr, int start, int end)
{if (start < end)
{int mid = partition(arr, start, end);
quickSort(arr, start, mid - 1);
quickSort(arr, mid + 1, end);
}
}
正文完