冒泡排序选择排序插入排序二分法排序快速排序二叉树排序堆排序总结

Posted fuyouqiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了冒泡排序选择排序插入排序二分法排序快速排序二叉树排序堆排序总结相关的知识,希望对你有一定的参考价值。



冒泡排序:
思路:
1)比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个
2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。
3)针对所有的元素重复以上的步骤,除了最后一个
时间复杂度为(O(n^2))
选择排序:
思路:
1)在未排序序列中找到最小(大)元素,存放到排序序列的起始位置(末尾位置),
2)再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
3)以此类推,直到所有元素均排序完毕。
时间复杂度为((O(n^2)))
插入排序:
思路:
1)通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
2)插入排序在从后向前扫描的过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间
时间复杂度为(O(n^2))


二分法排序:
思路:
1)在插入第i个元素时,对前面的0~i-1元素进行折半,先跟他们中间的那个元素比,
如果小,则对前半再进行折半,否则对后半进行折半,直到left<right,
然后再把第i个元素前1位与目标位置之间的所有元素后移,再把第i个元素放在目标位置上。

快速排序
思路:
1)将序列中取一个值,然后大于这个值放在后面的序列,小于这个值的放在前面序列
2)从前到中间,从后到中间按照1)的方法以此类推
时间复杂度为(n * log n)最坏情况为

二叉树:
(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;
(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;
(3)左、右子树也分别为二叉排序树;
(4)没有键值相等的结点。

以上是关于冒泡排序选择排序插入排序二分法排序快速排序二叉树排序堆排序总结的主要内容,如果未能解决你的问题,请参考以下文章

python开发之路Day17-算法设计(冒泡排序选择排序插入排序二叉树)

js冒泡排序法——选择排序(other)——计数排序(桶排序)——快速排序——插入排序-更新

14Java常用类(StringBuffer)排序算法(冒泡排序选择排序插入排序快速排序)查找算法(二分查找)

排序算法(冒泡,选择,插入,快速)查找算法(二分,快速)

java 交换排序之(冒泡排序快速排序)

Java八股文面试题 基础篇 -- 二分查找算法冒泡排序选择排序插入排序希尔排序快速排序