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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年03月26日 00时00分43秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
机器学习笔记(十二)机器学习(多类别神经网络,softmax)
2019-04-26
机器学习笔记(十三)机器学习(卷积神经网络CNN基本认知)
2019-04-26
Machine Learning吴恩达视频课(绪论,单变量线性回归,梯度下降)
2019-04-26
Machine Learning吴恩达视频课(线性代数)
2019-04-26
Android Studio3.3安装配置(windows)
2019-04-26
linux之使用indent格式化代码总结
2019-04-26
linux之写C代码出现warning: format not a string literal and no format arguments [-Wformat-security]
2019-04-26
linux c中的文件描述符与打开文件之间的关系
2019-04-26
linux c通过文件描述符以及write和read方法对文件进行读写
2019-04-26
LeetCode之First Unique Character in a String
2019-04-26
LeetCode之Find the Difference
2019-04-26
LeetCode之Missing Number
2019-04-26
LeetCode之Reverse String II
2019-04-26
Bit Manipulation —— 位运算
2019-04-26
LeetCode之Ransom Note
2019-04-26
LeetCode之Add Digits
2019-04-26