用c++写一个程序实现冒泡排序、选择排序算法、插入排序、快速排序算法。
时间: 2023-08-05 13:09:47 浏览: 105
好的,下面是 C++ 代码实现冒泡排序、选择排序、插入排序和快速排序算法:
```cpp
#include <iostream>
#include <vector>
using namespace std;
// 冒泡排序
void bubbleSort(vector<int>& nums) {
int n = nums.size();
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (nums[j] > nums[j+1]) {
swap(nums[j], nums[j+1]);
}
}
}
}
// 选择排序
void selectionSort(vector<int>& nums) {
int n = nums.size();
for (int i = 0; i < n - 1; i++) {
int minIndex = i;
for (int j = i + 1; j < n; j++) {
if (nums[j] < nums[minIndex]) {
minIndex = j;
}
}
swap(nums[i], nums[minIndex]);
}
}
// 插入排序
void insertionSort(vector<int>& nums) {
int n = nums.size();
for (int i = 1; i < n; i++) {
int j = i - 1, temp = nums[i];
while (j >= 0 && nums[j] > temp) {
nums[j+1] = nums[j];
j--;
}
nums[j+1] = temp;
}
}
// 快速排序
int partition(vector<int>& nums, int left, int right) {
int pivot = nums[left];
while (left < right) {
while (left < right && nums[right] >= pivot) {
right--;
}
nums[left] = nums[right];
while (left < right && nums[left] <= pivot) {
left++;
}
nums[right] = nums[left];
}
nums[left] = pivot;
return left;
}
void quickSort(vector<int>& nums, int left, int right) {
if (left >= right) {
return;
}
int pivotIndex = partition(nums, left, right);
quickSort(nums, left, pivotIndex - 1);
quickSort(nums, pivotIndex + 1, right);
}
void quickSort(vector<int>& nums) {
quickSort(nums, 0, nums.size() - 1);
}
int main() {
vector<int> nums = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
// 冒泡排序
bubbleSort(nums);
for (int x : nums) {
cout << x << " ";
}
cout << endl;
// 选择排序
selectionSort(nums);
for (int x : nums) {
cout << x << " ";
}
cout << endl;
// 插入排序
insertionSort(nums);
for (int x : nums) {
cout << x << " ";
}
cout << endl;
// 快速排序
quickSort(nums);
for (int x : nums) {
cout << x << " ";
}
cout << endl;
return 0;
}
```
其中,`bubbleSort` 函数实现冒泡排序,`selectionSort` 函数实现选择排序,`insertionSort` 函数实现插入排序,`partition` 函数实现快速排序的 partition 操作,`quickSort` 函数实现快速排序。在 `main` 函数中,分别调用了这四个排序函数,并输出排序后的结果。
阅读全文