当前位置: 首页 > news >正文

【快排与归并排序算法】

作者:指针不指南吗
专栏:算法篇

🐾或许会很慢,但是不可以停下🐾

文章目录

  • 一、快速排序 ( Quick Sort )
  • 二、归并排序 ( Merge Sort )
  • 总结

一、快速排序 ( Quick Sort )

1.思路

  • 找出一个分界点,随机的
  • 调整区间
    分治,双指针,指向两边,往中间走,遇到不满足条件的停下,直到两者都遇到不满足条件的,交换位置,直到两个指针相遇
  • 递归处理两段

分治
三步曲:分成子问题,解决子问题,子问题合并成大问题


quick_sort()


  1. 代码模板
void quick_sort (int q [ ] , int l , int r )
{if (l>= r) return ; //区间个数为 1,或者 0,返回int i =l-1;j=r+1;x=q[l+r>>1];  // i指左边, j指最右边,范围大点,要包含 l , r  while(i<=j){do i++;while(q[i]>x);  //指针移动,直到出现不满足条件的情况do j--;while(q[j]<x);if(i<j)  swap(q[i],q[j];   //找到 2个,交换}quick_sort(q,l,j),quick_sort(q,j+1,r);  //递归}


二、归并排序 ( Merge Sort )

1.思路

  • 确定一个分界点
  • 递归排序
  • 合二为一
    分成两组数据,然后两组数据从最小的比较,谁小放在temp数组,,其中一组数据已经走完了,另一组还剩着,把剩余的放在temp数组后面,最后temp 赋值给 q 即原始数组


2.代码模板

void merge_sort(int q[],int l,int r)
{if(l>=r) return ;  //区间只有一个元素或没有,返回 int mid=l+r>>1;    //确定中间值 merge_sort(q,l,mid),merge_sort(q,mid+1,r);   //递归排序 int i=l,j=mid+1,k=0;while(i<=mid&&j<=r){if(q[i]<=q[j]) temp[k++]=q[i++];  //谁小,谁就先存储在temp中 else temp[k++]=q[j++];}while(i<=mid) temp[k++]=q[i++];   //谁有剩余即其数大,存储在temp后面 while(j<=r) temp[k++]=q[j++];for(int i=l,j=0;i<=r;i++,j++) q[i]=temp[j];  //拷贝到原数组 
}

总结

快排和归并排序💭

  • 思路上

快排是先处理两边,再递归
归并是先递归,在处理两边

  • 时间复杂度上

快排 和 归并排序 的时间复杂度都是 O(log2nlog_{2}nlog2n )

  • 快排平均 O(log2nlog_{2}nlog2n ),最坏情况可以达到 O(n2n^2n2)
  • 归并排序的最坏和最好情况都是 O(log2nlog_{2}nlog2n )
http://www.lryc.cn/news/1927.html

相关文章:

  • 面试官问我:说说你对JMM内存模型的理解?为什么需要JMM?
  • 工程管理系统源码之提高工程项目管理软件的效率
  • SpringBoot集成xxl-job实现
  • 欧几里得度量和余弦度量的可取消生物识别方案
  • 平板作为主机扩展屏的实现
  • HTTP和HTTPS有什么区别?如何实现网站的HTTPS?
  • Rockstar Games遭黑客攻击,《侠盗猎车手6》90个开发视频外泄
  • RabbitMQ-客户端源码之AMQPImpl+Method
  • 雅思经验(7)
  • Ubuntu20.04 用 `hwclock` 或 `timedatectl` 设置RTC硬件时钟为本地时区
  • 大学物理·第15章【量子物理】
  • 2010-2019年290个地级市经济发展与城市绿化数据
  • 【CSS 布局】-多列布局
  • 从C语言向C++过渡
  • Matter 研讨会回顾(第三期)|乐鑫 Matter 免开发方案与证书服务介绍
  • 函数栈帧的创建和销毁——“C”
  • 腾讯云对象存储+企业网盘 打通数据链“最后一公里
  • 在浏览器输入url到发起http请求,这过程发生了什么
  • PyTorch学习笔记:nn.ReLU——ReLU激活函数
  • 同步线程
  • 服务端返回内容跨域CORS之后,也在chrome/edge浏览器里显示出响应信息
  • DHCP中继及配置
  • 中国社科院与美国杜兰大学金融管理硕士,让我们相遇在春暖花开时
  • MySQL---单表查询、多表查询
  • 3年自动化测试这水平?我还不如去招应届生
  • 5 个自定义 React Hooks 将改变你的代码
  • Java学习笔记-03(API阶段)
  • Django自定义模板标签的使用详解
  • 洗地机怎么选?洗地机品牌排行榜
  • CSS的元素显示模式