| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 快速排序(三)——排序优化 -> 正文阅读 |
|
[数据结构与算法]快速排序(三)——排序优化 |
之前通过递归实现了 最终排序,但依然需要优化 优化的原因如下: 1、对于key值的选取,仅以最左边作为key值,可能会导致栈溢出 2、递归的时候,如果区间长度小于10(10 只是一个参考值),使用快排的效率不高 优化一:避免key出现在边界这里使用的方法是三数取中法 三数:最左边的数、数组中间位置的数、最右边的数 比较三个数的大小,取中位数作为key
在单趟排序中,拿到key的下标以后,把key换到最左边,这样就不会影响后面的排序 数据量比较小,优化的效果不是特别明显 优化二:数据个数小于10 的时候,使用直接插入排序问:为什么不用希尔排序? 答:希尔排序可以用,但有点杀鸡用牛刀的感觉,数据量较大的时候,使用希尔排序合适 问:为什么不用堆排序? 答:堆排序建堆比较麻烦,建完还要自上而下调整,步骤比较繁琐
结论:在上一次 三数取中法的基础上,对于 长度小于5 的区间使用直接插入法,能够继续优化 ? ? ? ? ? 为了方便比对,测试了一下,同样的10个数,哪种方法更快? ? ? ? ? ? 很显然,10个数据的时候,插入排序比快速排序更优 ? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 13:26:40- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |