几种sort的优劣势
来源:互联网 发布:仿2017小米商城源码 编辑:程序博客网 时间:2024/04/30 12:22
quicksort有最好的实践效率。同时是in-place。配上random pivot/shuffle,median-
of-K 和 少量元素转insertion sort是最实用的排序方法。O(n^2)复杂度是极其小概率
事件,一般不会发生。同时因为其对硬件cache的应用效率较高,实践中Quicksort很难
被beat, 因为cache的访问速度比内存寻址快两个数量级。
递归不仅仅是存partition point,递归的过程中堆栈会存储所有function call 和相关变量的信息。
不过64bit的堆栈已经大幅简化了。
worstcase n(log(n))。同时基本的merge想法和变形,不需要random access, 常常用
在很多其他问题的解决之中。比如说merge lists。但是megersort的constant factor
比较大,是quicksort的好几倍。一般比Quicksort慢。
Heapsort因为在时间上和空间上都是最优,在很多论文只要涉及到sort都会用它做理论
分析。constant factor还不错,比merge sort的好。但是它的致命弱点是对cache利用
的不好,比如说max-heapify的过程中,很少有相邻元素的处理。虽然有这些缺点,有
时小规模排序时还是有用。
(Cache就是数据locality的问题。Cache都小,但是快。所以如果程序处理的数据都是连
续的,或者说有很好locality的特性,Cache hit概率就大,运行就快。)
并不是涉及到交换的都是不stable,比如说insertion sort就是stable的。关键要看交
换的过程是怎么样的。
of-K 和 少量元素转insertion sort是最实用的排序方法。O(n^2)复杂度是极其小概率
事件,一般不会发生。同时因为其对硬件cache的应用效率较高,实践中Quicksort很难
被beat, 因为cache的访问速度比内存寻址快两个数量级。
递归不仅仅是存partition point,递归的过程中堆栈会存储所有function call 和相关变量的信息。
不过64bit的堆栈已经大幅简化了。
worstcase n(log(n))。同时基本的merge想法和变形,不需要random access, 常常用
在很多其他问题的解决之中。比如说merge lists。但是megersort的constant factor
比较大,是quicksort的好几倍。一般比Quicksort慢。
Heapsort因为在时间上和空间上都是最优,在很多论文只要涉及到sort都会用它做理论
分析。constant factor还不错,比merge sort的好。但是它的致命弱点是对cache利用
的不好,比如说max-heapify的过程中,很少有相邻元素的处理。虽然有这些缺点,有
时小规模排序时还是有用。
(Cache就是数据locality的问题。Cache都小,但是快。所以如果程序处理的数据都是连
续的,或者说有很好locality的特性,Cache hit概率就大,运行就快。)
并不是涉及到交换的都是不stable,比如说insertion sort就是stable的。关键要看交
换的过程是怎么样的。
- 几种sort的优劣势
- 几种解析的优劣势.....
- 几种网络课件制作工具的优劣势比较
- 几种网络课件制作工具的优劣势比较
- 探讨DataGrid的几种分页方法的优劣
- 使用图片做按钮的几种方法和优劣
- 比较了几种主流unix系统的优劣
- ActiveMQ传输文件的几种方式原理与优劣
- ActiveMQ传输文件的几种方式原理与优劣
- ActiveMQ传输文件的几种方式原理与优劣
- ActiveMQ传输文件的几种方式原理与优劣
- ActiveMQ传输文件的几种方式原理与优劣
- Singleton单例模式 几种实现的优劣
- Javascript创建对象的几种方式及优劣
- 外存分配的几种方式,及各种优劣
- ActiveMQ传输文件的几种方式原理与优劣
- ActiveMQ传输文件的几种方式原理与优劣
- 【Unity教程】浅谈Find对象的几种方法优劣
- 通过虚拟化技术拯救硬盘的简单分析
- Nutch 的启动脚本分析 & Linux Shell
- shell下取得字符串的md5值
- JSP中拼装数据为XML出现的问题
- Struts框架中利用jquery/ajax 验证用户名是否为空,是否已注册
- 几种sort的优劣势
- 解析linux根文件系统的挂载过程
- Struts2 Action中跳转Action
- C语言之贪吃蛇游戏源码
- oracle11g完全卸载步骤
- 空字符串与NULL的区别
- jsp简单自定义标签的forEach遍历及转义字符
- Understand Drupal's render and theme
- 了解Flex程序的生命周期