c++排序方法总结(持续更新)
来源:互联网 发布:激战2人类男捏脸数据库 编辑:程序博客网 时间:2024/06/06 06:51
排序是程序常用的算法,一个好的排序影响这程序执行的效率,接下来我将介绍程序中常用的几种排序方法。
(图片来自网上)
一.冒泡排序法
冒泡排序顾名思义就是像冒泡一样依次将最大(或最小)的数字置顶,然后得到正确的排序。冒泡排序的时间复杂度也比较高,达到O(n^2),每次遍历无序区间都将优先级高的元素移动到无序区间的末尾。冒泡排序是一种稳定的排序方式
template<typename T>void bubbleSort(T &x)//冒泡排序法{int t,count;count = sizeof(x) / sizeof(x[0]);//计算数组的大小bool swapped = false;for (int i = 0; i < count-1; i++)//减1是因为最后一次不需要排序{for (int j = 0; j < count - i-1; j++){if (x[j] < x[j + 1])//将当前数字与后一位相比较若小于于则交换位置{t = x[j + 1];x[j + 1] = x[j];x[j] = t;}swapped = true;}if (swapped == false)//当排序正确时退出循坏return;}}
二.按名次排序
名次排序法先将数组中所有数字的名次计算出来,再利用一个中间数组存放排序后再放回,适合小程序的排序计算。
template<typename T>void rearrange(T &x){const int count= sizeof(x) / sizeof(x[0]);//计算数组的大小int t,*u;int r[count] = { 0 };//定义并初始化计数数组for (int i = 0; i < count; i++){t = x[i];for (int j = 0; j < count; j++)if (x[j] < t)r[i]++;//算出每个数在数组中的名次并存在计数数组中}//当r[i]!=i时,说明排序位置不对,因此交换for(int i=0;i<count;i++)while (r[i] != i){t = r[i];swap(x[i], x[t]);swap(r[i], r[t]);}}
三.选择排序法
选择排序法,先找到最小(最大)的数字然后将其移到第一个位置,再将余下的数字依次放在对应的位置,依次类推直至排序完成。
template<typename T>void selectionSort(T &x){int indexOfMin,count,t;count = sizeof(x) / sizeof(x[0]);//计算数组大小for (int i = 0; i < count; i++){indexOfMin = i;//算出每一轮的最小值for (int j = i; j < count; j++)if ((x[indexOfMin] >= x[j]) && (indexOfMin != j))indexOfMin = j;//将得到的最小值一次放在相应位置t = x[i];x[i] = x[indexOfMin];x[indexOfMin] = t;}}
阅读全文
0 0
- c++排序方法总结(持续更新)
- 常用排序算法总结。【力求持续更新】
- 排序算法总结(持续更新中)
- c语言排序(持续更新)
- C/C++ 开发总结 -- 【持续更新】
- Tensorflow 常用方法总结(持续更新)
- 排序算法(持续更新...)
- 笔试总结——c、c++【持续更新】
- C语言版各种排序算法(持续更新中)
- 异常总结,持续更新
- 快捷键总结(持续更新)
- 学习总结,持续更新
- js总结-持续更新。。。。。
- dpdk总结【持续更新】
- Unix C 常见编译错误总结(持续更新)
- Unix C 常见编译错误总结(持续更新)
- Objective-C 开发的一点小总结(持续更新)
- C C++ Java 区别性记忆总结【持续更新中】
- svn之迁移代码技巧
- /Users/devzkn/.ssh 的config 配置备份
- 日本某地发生了一件谋杀案,警察通过排查确定杀人凶手必为4个嫌疑犯 的一个。以下为4个嫌疑犯的供词。 A说:不是我。 B说:是C。 C说:是D。 D说:C在胡说 已知3个人说了真话,1个人说
- Codeforces 155E E. Double Profiles【思维+hash】
- 世界上10个最独特的数据中心
- c++排序方法总结(持续更新)
- 强化学习基础学习系列之求解MDP问题的policy-base方法
- Java-方法重载与重写
- MVP模式 + RecyclerView瀑布流 + 上拉加载、下拉刷新
- C/C++ 输出间隔控制
- HDU-3966 Aragorn's Story (树链剖分 树状数组 区间修改 点查询)(2011 Multi-University Training Contest 13)
- 第四章、XML集成(定义XML数据列、XML模式集合、XML数据类型方法 .query,.value,.modify,.nodes,.exists),关系数据转成XML
- 每天一道LeetCode-----字符串乘法
- Hadoop中Context类的作用