C++快速排序——递归方法
发布日期:2022-02-06 00:27:08 浏览次数:26 分类:技术文章

本文共 1346 字,大约阅读时间需要 4 分钟。

C++快速排序——递归方法

刚开始看《算法图解》,进行简单记录。书中第四章有一个快速排序的代码,采用的是递归方法,书中采用的是python,在这里尝试用C++实现一下。

//divide and conquer//quicksort#include 
#include
using namespace std;vector
quicksort(vector
v){
int pivot; //选取基准值 //所有比基准值小的元素组成数组v1,所有比基准值大的元素组成数组v2。 vector
v1, v2, sort_v1, sort_v2, end; if (v.size() < 2) //vector中元素只有一个或没有时 返回vector本身。 return v; else {
pivot = v[0]; //基准值 选取为第一个元素 for (int i = 1; i < v.size(); ++i) {
if (v[i] < pivot) //与基准值比较,填充v1 v2。 v1.push_back(v[i]); else v2.push_back(v[i]); } sort_v1 = quicksort(v1); //递归,对v1排序 sort_v2 = quicksort(v2); //递归,对v2排序 //将排序后的所有元素顺序放入数组 end 中 for (int i = 0; i < sort_v1.size(); ++i) {
end.push_back(sort_v1[i]); } end.push_back(pivot); //基准值放入 for (int i = 0; i < sort_v2.size(); ++i) {
end.push_back(sort_v2[i]); } return end; //返回end }}int main(){
vector
my,sort; int number; cout << "numbers: " << endl; while (cin >> number) //输入一个数组my { my.push_back(number); if (cin.get() == '\n') //回车键退出 break; } sort = quicksort(my); //对my数组进行排序 for (int i = 0; i < sort.size(); i++) //打印排序后的数组 { cout << sort[i] << " "; } return 0;}

排序效果:

手动输入一串数字,回车键结束。排序效果如下:

在这里插入图片描述

转载地址:https://blog.csdn.net/weixin_46181372/article/details/119445548 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:SLAM相关库安装
下一篇:C++中的map学习记录

发表评论

最新留言

不错!
[***.144.177.141]2024年03月26日 00时00分43秒