不多说了,直接上代码吧

int quicksort(vector<int>& vec,int l,int r)
{int key=vec[r];int pre=l-1;int cur=l;while(cur<r){if(vec[cur]<key){pre++;swap(vec[pre],vec[cur]);}cur++;}swap(vec[pre+1],vec[r]);return pre+1;
}void Quick(vector<int>& vec,int l,int r)
{if(l<r){int p=quicksort(vec,l,r);Quick(vec,l,p-1);Quick(vec,p+1,r);}
}

归并

void Merge(vector<int>& vec, int l, int m, int r)
{int len = r - l + 1;vector<int> tmp(len);int left = l;int right = m + 1;int index = 0;while (left <= m && right <= r){tmp[index++] = vec[left] <= vec[right] ? vec[left++] : vec[right++];}while (left <=m ){tmp[index++] = vec[left++];}while (right <= r){tmp[index++] = vec[right++];}for (int i = 0; i < len; i++){vec[l++] = tmp[i];}
}
void Mergesort(vector<int>& vec, int l, int r)
{if (l < r){int m = (l + r) / 2;Mergesort(vec, l, m);Mergesort(vec, m + 1, r);Merge(vec, l, m, r);}
}

快排,归并(日常复习)相关推荐

  1. 【数据结构算法】快排/归并/堆排序 c++

    一个用来了解数据结构算法(各种排序,列表,树等)很友好的网站: https://visualgo.net/en 该题目来自于牛客:算法篇-排序问题 快排(必备)+归并(体会分治)+堆(自己建堆) // ...

  2. 排序(一)归并、快排、优先队列等(图文具体解释)

    排序(一) 0基础排序算法 选择排序 思想:首先,找到数组中最小的那个元素.其次,将它和数组的第一个元素交换位置.再次.在剩下的元素中找到最小的元素.将它与数组的第二个元素交换位置. 如此往复,直到将 ...

  3. (十)更快的排序算法(归并、快排、基数)

    目标 1) 使用下列方法将一个数组按升序排序:归并排序.快速排序和基数排序 2) 评估排序的效率,讨论不同的方法的相对效率 目录 9.1 归并排序 9.1.1 归并数组 9.1.2 递归归并排序 9. ...

  4. 【数据结构与算法】快排、归并 O(nlogn) 基于比较

    冒泡.插入.选择 O(n^2) 基于比较 快排.归并 O(nlogn) 基于比较 计数.基数.桶 O(n) 不基于比较 一.分治思想 1.分治思想:分治,顾明思意,就是分而治之,将一个大问题分解成小的 ...

  5. 排序(冒泡、选择、插入、希尔、快排、堆排、归并)

    冒泡排序   冒泡排序时通过无序区中相邻记录的关键字间的比较和位置的交换,使关键字最小的元素如气泡似的逐步上浮直水面.有序区逐渐扩大,无序区逐渐缩小.   冒泡排序算法的原理如下: 比较相邻的元素.如 ...

  6. 快排、归并、堆排序运用场景

    快排,归并排,堆排序时间复杂度相同,但它们三者区别是快速排序和堆排序是不稳定的,归并为稳定型,对于辅助空间堆排序要求最小,归并最多,它们排序的最好情况复杂度相同,最坏的情况下快速排序要复杂些,根据数据 ...

  7. 常见经典排序算法学习总结(插入、shell、冒泡、选择、归并、快排等)

    博主在学习过程中深感基础的重要,经典排序算法是数据结构与算法学习过程中重要的一环,这里对笔试面试最常涉及到的7种排序算法(包括插入排序.希尔排序.选择排序.冒泡排序.快速排序.堆排序.归并排序)进行了 ...

  8. 数据结构与算法(二):排序(递归、回溯、数论、插入、希尔、归并、选择、冒泡、快排、贪心、动态规划)

    算法排序:递归.回溯.数论.插入.希尔.归并.选择.冒泡.快排.贪心.动态规划 数论思想:利用数学公式或者定理或者规律求解问题: 算法思想中最难的点:递归+动态规划:树论:二叉树,红黑树 思考题: 微 ...

  9. C++数据结构和算法2 栈 双端/队列 冒泡选择插入归并快排 二三分查找 二叉树 二叉搜索树 贪婪 分治 动态规划

    C++数据结构和算法2 栈 双端/队列 冒泡选择插入归并快排 二三分查找 二叉树 二叉搜索树 贪婪 分治 动态规划 博文末尾支持二维码赞赏哦 _ github 章3 Stack栈 和 队列Queue= ...

  10. 210814算法日记:归并逆序对板子快排第k个数板子第k个数的stl

    1.归并逆序对 #include<iostream> using namespace std; const int N=1e5+10; typedef long long ll; int ...

最新文章

  1. 【npm第4期】文件系统操作的跨平台兼容
  2. 《Linux嵌入式实时应用开发实战(原书第3版)》——第2章 安装Linux2.1 发行版...
  3. python中怎么做分组问题_详解Python中的分组函数groupby和itertools)
  4. 最小安装虚拟机命令行安装图形化
  5. java元婴期(24)----java进阶(mybatis(3)---动态sql(重点))
  6. 未来函数在线检测_嵌入式实时操作系统任务栈溢出检测原理
  7. struts拦截器+注解实现网络安全要求中的日志审计功能
  8. 22、在有序数组中插入一个数值,数组仍然有序——数组
  9. linux7 ftp服务器,Centos7下搭建FTP服务器
  10. redis 中 epoll 模型 ~ 霓裳
  11. liteide 如何进行修改默认快捷键
  12. origin柱状图同时有两组数和两组数差值_Origin入门教程(十二):「误差棒」棒棒棒儿...
  13. 如何创建GOOGLE ADS的MCC经理账户,有什么好处?
  14. 神经元的细胞体位于哪里,神经在人体的什么部位
  15. 卷积神经网络表情识别,神经网络动作识别
  16. 台式计算机的配置清单表格,电脑配置清单表格,为你分别介绍不同价位的三种配置清单...
  17. 大型软件设计——进度报告
  18. 杰理之省电容MIC收敛值【篇】
  19. 计算机的音乐数字要全是数字,数字中的音乐
  20. 【美图】从字符串 com.meitu/mtxx/6.8.0(ios10.2)/lang:zh 中取出6.8.0

热门文章

  1. 学习笔记:修改网吧计费系统
  2. json rpgmv 加密_rpg制作大师mv加密打包教程
  3. 计算机vfp知识要点,2017年职称计算机VisualFoxPro基础知识:表的基本操作
  4. Python如何开发一款连连看脚本,第一必须是我。
  5. 南阳师范计算机与信息技术学院,刘军(计算机与信息技术学院)老师 - 南阳师范学院 - 院校大全...
  6. 经典详细的Struts2教程(附案例源码)
  7. linux阿帕奇服务器配置方案,阿帕奇服务器_服务器配置方案_linux配置apache服务器...
  8. 今天买了个黑莓7290
  9. Hive On Spark搭建报错:Failed to create Spark client for Spark session xx: ..TimeoutException
  10. 使用手持式频谱分析仪进行TDD信号分析