用C++写一个快速排序的算法
时间: 2023-03-27 18:03:50 浏览: 72
好的,我可以回答这个问题。以下是一个用 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) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i++;
j--;
}
}
if (left < j) {
quicksort(arr, left, j);
}
if (i < right) {
quicksort(arr, i, right);
}
}
```
这个算法的时间复杂度为 O(nlogn),可以对一个数组进行快速排序。
相关问题
用c++ 写一个快速排序算法
以下是C++实现的快速排序算法:
```c++
#include <iostream>
#include <vector>
using namespace std;
void quickSort(vector<int>& nums, int left, int right) {
if (left >= right) return;
int pivot = nums[left];
int i = left, j = right;
while (i < j) {
while (i < j && nums[j] >= pivot) j--;
nums[i] = nums[j];
while (i < j && nums[i] <= pivot) i++;
nums[j] = nums[i];
}
nums[i] = pivot;
quickSort(nums, left, i - 1);
quickSort(nums, i + 1, right);
}
int main() {
vector<int> nums = {3, 2, 1, 5, 6, 4};
quickSort(nums, 0, nums.size() - 1);
for (int num : nums) {
cout << num << " ";
}
cout << endl;
return 0;
}
```
快速排序的基本思想是选取一个基准元素,将序列分成两部分,左边部分小于基准元素,右边部分大于基准元素,然后对左右两部分递归进行快速排序。
这里使用了vector作为输入序列,left和right分别表示序列的左右端点。算法的时间复杂度为O(nlogn)。
用C++ 写一个快速排序算法
以下是C++实现的快速排序算法:
```c++
#include <iostream>
#include <vector>
using namespace std;
void quickSort(vector<int>& nums, int left, int right) {
if (left >= right) return;
int pivot = nums[left];
int i = left, j = right;
while (i < j) {
while (i < j && nums[j] >= pivot) j--;
nums[i] = nums[j];
while (i < j && nums[i] <= pivot) i++;
nums[j] = nums[i];
}
nums[i] = pivot;
quickSort(nums, left, i - 1);
quickSort(nums, i + 1, right);
}
int main() {
vector<int> nums = {3, 2, 1, 5, 6, 4};
quickSort(nums, 0, nums.size() - 1);
for (int num : nums) {
cout << num << " ";
}
cout << endl;
return 0;
}
```
快速排序的基本思想是选取一个基准元素,将序列分成两部分,左边部分小于基准元素,右边部分大于基准元素,然后对左右两部分递归进行快速排序。
这里使用了vector作为输入序列,left和right分别表示序列的左右端点。算法的时间复杂度为O(nlogn)。