![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序算法
文章平均质量分 50
不死奇迹
和一群有趣的灵魂,享受有趣的故事
展开
-
堆排序法(Heap Sort)
堆排序法:将一组数据放在数组中,按照完全二叉树的形式排列。堆排序分为“大根堆”和“小根堆”。堆排序是不稳定的!!! 堆排序的平均复杂度为nlogn,最好和最差时的时间复杂度都是nlogn。大根堆: 即根节点>=子节点,最大的值在根节点。 小根堆: 即根节点<=子节点,最小的值在根节点。堆排序法的实现原理(以大根堆为例): 1. 初始化大根堆,使当前树满足大根...原创 2018-07-28 15:08:37 · 456 阅读 · 0 评论 -
归并排序法(Merge Sort)
归并排序法(Merge Sort):归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有的子序列合并,得到完全有序的 序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为“二路归并”。归并排序是“稳定的排序”,即相等的元素的顺序不会发生改变。 特点: ...原创 2018-07-28 15:15:49 · 734 阅读 · 0 评论 -
快速排序法(Quick Sort) : C++的std:sort()就是此方法实现
快速排序法:快速排序法是目前平均效率最快的排序算法(一般来说,但不排除某些情况),最快为nlogn, 最慢为n平方。快速排序法的实现原理:选取数组中的一个数据(一般为数组第一个元素),将数组中大于该元素的数据放在它的后面,小于“或”等于它的数据放在它的前面(所以快牌是不稳定的),即完成一趟快速排序 1. 设数组A的长度为n,设置变量i=0, j=n-1. 2. 设A[0]的...原创 2018-07-28 15:20:39 · 1195 阅读 · 0 评论 -
冒泡排序(Bubble Sort)
冒泡排序(Bubble Sort): 将相邻的两个元素比较,如果前者值大于后者,则交换位置,直到所有的元素按照从小到大的顺序排列好。 此排序算法需要操作的次数最快为(n-1)即时间复杂度为O(n),最慢的操作次数为n(n/2-1)即当n趋于无穷大时,时间复杂度为O(n²)。/* Desc: 冒泡排序算法排序数组 Param: int array[] 传入的数组 Param: int ...原创 2018-07-28 15:24:31 · 182 阅读 · 0 评论 -
希尔排序(Shell’s Sort)
希尔排序(Shell’s Sort): 是“插入排序”的一种又称为“缩小增量排序(Diminishing Increment Sort)”,是直接插入排序算法的一种更高效的改进版本。希尔排序是“非稳定排序算法”!! 希尔排序稳定性解析: 由于多次插入排序,我们知道一次插入排序是稳定的,不会改变相同元素的相对顺序,但在不同的插入排序过程中,相同的元素可能在各自的插入排序中移动,最后稳定性就...原创 2018-07-28 15:28:40 · 220 阅读 · 0 评论 -
归并、快排、堆排、冒泡排序比较
1.数据量为“1万”时,排序所耗时间: 2.数据量为“十万”时,排序所耗时间: 3.数据量为“一百万”时(因为冒泡太慢了,所以不显示冒泡排序时间),排序所耗时间: 4.数据量为“五百万”时(因为冒泡太慢了,所以不显示冒泡排序时间),排序所耗时间: 5.数据量为“一千万”时(因为冒泡太慢了,所以不显示冒泡排序时间),排序所耗时间: 注意:以上比较结果所使用的数据都是十万...原创 2018-07-28 15:31:38 · 2886 阅读 · 0 评论 -
二叉树及其演变的二叉树
二叉树,完全二叉树,满二叉树,平衡二叉树的区别度:指的是一个节点拥有子节点的个数。如二叉树的节点的最大度为2。 深度:树的层数,根节点为第一层,依次类推。 叶子节点:度为0的节点,即没有子节点的节点。树:树的每一个节点,可以有n(后续节点)个子节点,但每个节点只有一个前驱节点。二叉树:除叶子节点外,每个节点只有两个分支,一个是左子树,另一个为右子树,每个节点的最大度数为2。满二...原创 2018-08-03 19:10:01 · 207 阅读 · 0 评论