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

13.排序(上)

begin和max重叠了最坏n方最好n方比冒泡排序还不足如果有序,冒泡是0,选择还是那些,选择排序是最没用的排序通常选一个作为关键字,一般是第一个或最后一个,比他小放左边,大放右边

相遇的位置一定比key小,为什么后面讲,这是单趟排序,这个6就排好了不需要动了,如果左区间有序右区间有序就拍好了,3为key,右找小左找大,没找到在2相遇了,换一下

排好一个数同时做好分割,左区间走递归,依次

只有一个数就返回了,无值回来

传left right 区间更容易控制测试以下

begin走过了这里跟局部变量换了

keyi就要指向begin,这样方便分割

为什么定义ubegin end 不用left right++ --,如果++ --就不好分割区间了此时如果左区间有序右区间有序那么就有序了 

什么时候不需要分割了,区间一个值或不存在(left>right)下面右不存在

快排的时间复杂度怎么算,这里递归走了多少层,如果按每趟每个位置排好看,这n个数分成二叉树,如果均分情况下非常接近满二叉树,完全二叉树,所以这里logN层,每一层是多少,begin end合计往中间走了N次,下一层n-1,但是我们大概估算N,所以是N×logN

当前快排的缺陷:有序情况下栈溢出,key是1,右边开始找小一直找不到,key处相遇,key左边不存在,右边再选一个key.....退化成n方的算法(等差数列n方  )不断调用quick sort   release下不会爆

debug下面支持调试,优化开不了那么高,深度小 release递归深度还行,快排nlogN前提是每次选的key都接近中间位置,递归深度就是logn而上面那图深度变N,控不住了,快排在这还是有比较明显的缺陷

解决:固定选最左边或最右边这个值为key就会存在这个问题,

三数取中最左边最右边中间选中间的值作key,把这个值和key位置换一下,保证逻辑不变最小值出来最大值出来,中间值就出来

这是有序情况下前面改成a4了取中降低了排好序的概率 

http://www.dtcms.com/a/441938.html

相关文章:

  • 《KelpBar海带Linux智慧屏项目》
  • 二叉树的层序遍历--力扣
  • 解决Linux下操作无权限问题——chmod: 正在更改...的权限:不允许的操作
  • 哈尔滨论坛建站模板ftp上传网站后怎么弄
  • 使用D3.js画人物关系图
  • 数据结构与算法篇--语义智能指针设计模式
  • 微信小程序入门学习教程,从入门到精通,WXML(WeiXin Markup Language)语法基础(8)
  • 明天好好总结汇总分析博客
  • HTML--在textarea左侧添加行号
  • mysql逻辑备份跟物理备份的区别
  • Django 学习日志
  • 如何用word做简单的网站wordpress绑定
  • 第十三篇:Python并发编程进阶:多进程(multiprocessing)
  • 硬件-电容学习DAY23——电容设计实战指南:从选型到高频应用
  • 20232022年408真题易错知识点整理
  • 【Qt开发】输入类控件(四)-> QSpinBox
  • uniapp与webview通信
  • 地推app接任务平台网站图片大小优化
  • Java Stream API
  • Freqtrade - 快速开始Quick Start
  • C++list全解析
  • KafKa概念与安装
  • 基于单片机和LabVIEW的多路数据采集器系统设计(论文+源码)
  • 网站你懂我意思正能量晚上在线下载免费软件魅族网站被黑客入侵怎么办
  • C语言笔记(2)
  • interface range 概述及题目
  • web:vue中方法watch和方法watchEffect的对比
  • 微信息公众平台微网站建设郴州网站建设费用价格
  • leetcode 35.搜索插入的位置 python
  • 探索 Docker/K8s 部署 MySQL 的创新实践与优化技巧——容器化部署深度解析