#include<iostream>
#include<fstream>
#include<string>
#include<vector>
#include <algorithm>
using namespace::std;
class Solution {
public:
//直接插入排序(插到该数左边所有数字中,第一个比他小的数的右边)
void insertsort(vector<int>& num) {
for (int i = 1; i < num.size(); i++) {
int tmp = num[i], j = i - 1; //tmp为监视哨
while (j>=0&&tmp < num[j]) { //j要防止越界
num[j + 1] = num[j]; //比tmp大的数都向右挪一个位置
j--;
}
num[j + 1] = tmp; //tmp最后放在比它小的数的右边
}
}
//冒泡排序(小数上浮)
void bubblesort(vector<int>& num) {
int i, j;
for (i = 0; i < num.size()-1; i++) { //num[i]存放上浮的最小数
for (j = num.size() - 1; j > i; j--) { //j>i,保证每一轮最后比较的是num[i]和num[i+1]
if (num[j] < num[j - 1]) swap(num[j], num[j - 1]);
}
}
}
//快速排序
int traversal(vector<int>& num, int l, int r) {
int tmp = num[l];
int i = l, j = r;
while (i < j) {
while (num[j] > tmp && i < j) j--;
if (num[j] < tmp && i < j) {
num[i] = num[j];
}
while (num[i] < tmp && i < j)i++;
if (num[i] > tmp && i < j) {
num[j] = num[i];
}
num[i] = tmp;
}
return i;
}
void quicksort(vector<int>& num, int l, int r) {
if (l < r) {
int mid = traversal(num, l, r);
quicksort(num, l, mid - 1);
quicksort(num, mid + 1, r);
}
}
//选择排序(每次选出最小的数放前面)
void selectsort(vector<int>& num) {
for (int i = 0; i < num.size() - 1; i++) {
int min = i;
for (int j = i + 1; j < num.size(); j++) {
if (num[j] < num[min]) {
min = j;
}
}
swap(num[i], num[min]);
}
}
};
int main() {
vector<int> num{ 5, 8, 9, 6, 2 };
Solution sort;
//sort.insertsort(num);
//sort.bubblesort(num);
//sort.selectsort(num);
sort.quicksort(num, 0, num.size()-1);
for (auto n : num) {
cout << n << ' ';
}
cout << endl;
}
快速排序最好最通用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具