排序算法之--从冒泡排序到快速排序

简介:

冒泡排序是很形象的一种排序方案,这里就不多谈了,但是它和快排的关系是什么呢?实际上快排可以看成是两个方向的冒泡排序,冒泡排序的过程是在一个方向伸展,最终到底的那个元素一定是个最值,它是以全局最值为基础的,最值最终冒泡到端点,而快排则不然,它是以数据为中心的,它不求最终能找个最值,而是最终能定位当前数据,快排的运气性更加强一些,如果你每次都能猜到待排数据的中值,那么整个排序很快就能完成。快排的本质就是在两个方向夹逼当前的基准元素,目的就是定位当前元素的最终位置,想想看如果你一开始就猜的值就在它最终的位置,那么就不用翻箱倒柜移动或者交换数据了,不像冒泡排序,它不是以数据位置为中心,而是最终一定将最值放到端点,那么它交换数据或移动数据就比较多,而快排一开始就注重数据的最终位置,因此按照概率来讲交换或者移动数据的几率就不大。

对于时间复杂度的计算以及排序算法的使用场合,考虑一下归并排序是基于递归的,时间复杂度可以通过主定理得到,对于归并排序而言这个事实更简单,用树就可以看出来是nlogn,而对于n^2复杂度的比如插入排序,数据量越大归并排序的优势越明显。



 本文转自 dog250 51CTO博客,原文链接:http://blog.51cto.com/dog250/1274007

相关文章
|
15天前
|
搜索推荐 C语言
【排序算法】快速排序升级版--三路快排详解 + 实现(c语言)
本文介绍了快速排序的升级版——三路快排。传统快速排序在处理大量相同元素时效率较低,而三路快排通过将数组分为三部分(小于、等于、大于基准值)来优化这一问题。文章详细讲解了三路快排的实现步骤,并提供了完整的代码示例。
41 4
|
30天前
|
搜索推荐
冒泡排序算法
【10月更文挑战第19天】冒泡排序是一种基础的排序算法,虽然在实际应用中可能不是最优的选择,但对于理解排序算法的基本原理和过程具有重要意义。
|
1月前
|
算法 搜索推荐 Shell
数据结构与算法学习十二:希尔排序、快速排序(递归、好理解)、归并排序(递归、难理解)
这篇文章介绍了希尔排序、快速排序和归并排序三种排序算法的基本概念、实现思路、代码实现及其测试结果。
23 1
|
1月前
|
算法 搜索推荐
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
本文介绍了冒泡排序、选择排序和插入排序三种基础排序算法的原理、实现代码和测试结果。
18 0
数据结构与算法学习十一:冒泡排序、选择排序、插入排序
|
1月前
|
搜索推荐 算法 数据可视化
深入解析冒泡排序算法
深入解析冒泡排序算法
39 4
|
1月前
|
搜索推荐 Java Go
深入了解快速排序算法
深入了解快速排序算法
36 2
|
1月前
|
搜索推荐 C语言
排序算法--冒泡排序
排序算法--冒泡排序
16 0
|
1月前
|
存储 搜索推荐 算法
【排序算法(二)】——冒泡排序、快速排序和归并排序—>深层解析
【排序算法(二)】——冒泡排序、快速排序和归并排序—>深层解析
|
1月前
|
算法 Python
Python算法编程:冒泡排序、选择排序、快速排序
Python算法编程:冒泡排序、选择排序、快速排序
|
1月前
|
搜索推荐 C语言 C++
【C语言】指针篇-精通库中的快速排序算法:巧妙掌握技巧(4/5)
【C语言】指针篇-精通库中的快速排序算法:巧妙掌握技巧(4/5)
下一篇
无影云桌面