简单快速排序pta
时间: 2023-06-21 20:21:12 浏览: 187
简单快速排序(Quick Sort)是一种常见的排序算法,其基本思想是通过一趟排序将待排序的记录分割成独立的两部分,其中一部分记录的关键字都比另一部分记录的关键字小,然后再对这两部分记录分别进行快速排序,以达到整个序列有序的目的。
下面是简单快速排序的代码实现:
```c++
void quickSort(int arr[], int left, int right) {
int i = left, j = right;
int pivot = arr[(left + right) / 2];
while (i <= j) {
while (arr[i] < pivot) {
i++;
}
while (arr[j] > pivot) {
j--;
}
if (i <= j) {
swap(arr[i], arr[j]);
i++;
j--;
}
}
if (left < j) {
quickSort(arr, left, j);
}
if (i < right) {
quickSort(arr, i, right);
}
}
```
其中,参数 `arr` 表示待排序的数组,`left` 表示数组的左端点,`right` 表示数组的右端点。在算法的开始,我们先选取一个基准值 `pivot`,然后将待排序的数组分为两部分,一部分是小于 `pivot` 的元素,另一部分是大于 `pivot` 的元素。在分割的过程中,我们使用两个指针 `i` 和 `j`,分别指向待排序数组的左端点和右端点,然后不断地移动这两个指针,直到 `i` 和 `j` 相遇。在移动指针的过程中,如果发现 `arr[i]` 大于 `pivot`,或者 `arr[j]` 小于 `pivot`,则交换这两个元素的位置。最后,我们将数组分为的两个部分分别递归地进行排序,直到整个数组有序为止。
阅读全文