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



冒泡排序:
思路:
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)没有键值相等的结点。
原文地址:https://www.cnblogs.com/fuyouqiang/p/11844561.html