用c++写一个排序,实现快速插入
时间: 2023-07-07 14:29:10 浏览: 100
好的,下面是一个基本的快速排序和插入排序的C++实现:
```C++
#include <iostream>
#include <vector>
#include <ctime>
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);
}
// 插入排序
void insertionSort(vector<int>& nums) {
for (int i = 1; i < nums.size(); i++) {
int j = i - 1, cur = nums[i];
while (j >= 0 && nums[j] > cur) {
nums[j + 1] = nums[j];
j--;
}
nums[j + 1] = cur;
}
}
int main() {
// 生成随机数序列
srand(time(nullptr));
vector<int> nums(10);
for (int i = 0; i < nums.size(); i++) {
nums[i] = rand() % 100;
}
// 打印排序前的序列
cout << "Before sorting: ";
for (auto num : nums) {
cout << num << " ";
}
cout << endl;
// 快速排序
quickSort(nums, 0, nums.size() - 1);
// 打印快速排序后的序列
cout << "After quick sort: ";
for (auto num : nums) {
cout << num << " ";
}
cout << endl;
// 插入排序
insertionSort(nums);
// 打印插入排序后的序列
cout << "After insertion sort: ";
for (auto num : nums) {
cout << num << " ";
}
cout << endl;
return 0;
}
```
输出结果为:
```
Before sorting: 35 71 89 12 11 16 9 63 26 68
After quick sort: 9 11 12 16 26 35 63 68 71 89
After insertion sort: 9 11 12 16 26 35 63 68 71 89
```
希望这个例子能够帮助你了解快速排序和插入排序的基本实现。
阅读全文