Cplusplus实现的快速排序
时间: 2023-09-11 22:05:17 浏览: 140
### 回答1:
在 C++ 中实现快速排序的方式如下:
```
#include <iostream>
#include <algorithm>
using namespace std;
void quick_sort(int *arr, int left, int right)
{
// 如果左指针大于右指针,说明区间内的元素已经排好序
if (left > right)
return;
int i = left;
int j = right;
// 取左端点的值作为基准数
int pivot = arr[left];
while (i != j)
{
// 从右向左找到第一个小于基准数的数
while (arr[j] >= pivot && i < j)
j--;
// 从左向右找到第一个大于基准数的数
while (arr[i] <= pivot && i < j)
i++;
// 交换两个数
if (i < j)
{
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
// 最后将基准数与i和j相等位置的数交换
arr[left] = arr[i];
arr[i] = pivot;
// 递归左右两个区间
quick_sort(arr, left, i - 1);
quick_sort(arr, i + 1, right);
}
int main()
{
int arr[] = {3, 2, 4, 1, 5};
int len = sizeof(arr) / sizeof(int);
quick_sort(arr, 0, len - 1);
for (int i = 0; i < len; i++)
cout << arr[i] << " ";
cout << endl;
return 0;
}
```
上面的代码是一个基于数组实现的快速排序算法。首先,定义一个快速排序函数,其中参数包括要排序的数组,以及数组的左右端点。然后,使用两个指针 i 和 j,从数组的两端开始向中间扫描。从
### 回答2:
C++中的快速排序算法是一种常用的排序算法,它基于分治的思想,通过将数组分为两部分并递归地对每一部分进行排序,最终达到整个数组有序的目的。
在C++中实现快速排序,可以定义一个递归函数来完成排序过程。具体步骤如下:
1.选择数组中的一个元素作为基准(pivot),常用的选择方式是选择首元素或者随机选择一个元素。
2.将数组分为两部分,小于等于基准的元素放在左边,大于基准的元素放在右边。
3.将基准元素放在正确的位置,即将它与分割后的数组的中间元素交换。
4.递归地对左边和右边的子数组进行快速排序。
5.重复以上步骤,直到每个子数组只有一个元素时,排序完成。
下面是一个简单的C++代码示例:
```cpp
#include <iostream>
using namespace std;
void quickSort(int arr[], int left, int right) {
if (left < right) {
int pivot = arr[left];
int i = left, j = right;
while (i < j) {
while (i < j && arr[j] >= pivot) {
j--;
}
if (i < j) {
arr[i] = arr[j];
i++;
}
while (i < j && arr[i] <= pivot) {
i++;
}
if (i < j) {
arr[j] = arr[i];
j--;
}
}
arr[i] = pivot;
quickSort(arr, left, i - 1);
quickSort(arr, i + 1, right);
}
}
int main() {
int arr[] = {5, 2, 9, 1, 7, 6};
int n = sizeof(arr) / sizeof(arr[0]);
quickSort(arr, 0, n - 1);
cout << "排序后的数组:";
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
以上代码使用递归来实现快速排序,首先选择数组的第一个元素作为基准,然后通过分割数组的方式实现排序。最后输出排序后的数组。
通过这样的实现,我们可以快速对数组进行排序,快速排序的时间复杂度为O(nlogn),在实际应用中具有较好的性能。
### 回答3:
快速排序是一种常用的排序算法,也可以用C++实现。下面是快速排序的实现过程:
1. 首先,需要编写一个辅助函数来交换两个元素的位置:
```cpp
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
```
2. 接下来,编写 partition 函数,用于将数组分为两个部分,并返回基准元素的位置:
```cpp
int partition(int arr[], int low, int high) {
int pivot = arr[high]; // 选取最后一个元素作为基准
int i = low - 1;
for (int j = low; j <= high - 1; j++) {
if (arr[j] <= pivot) {
i++;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i+1], &arr[high]);
return i+1;
}
```
3. 最后,编写快速排序函数,通过递归调用 partition 函数来排序子数组:
```cpp
void quickSort(int arr[], int low, int high) {
if (low < high) {
int pi = partition(arr, low, high);
quickSort(arr, low, pi-1);
quickSort(arr, pi+1, high);
}
}
```
以上是用C++实现快速排序的过程。你可以使用这段代码来对任何整数数组进行排序。
阅读全文
相关推荐


















