堆排序算法就是通过维护一个小根堆或者大根堆的数据结构。小/大根堆本质上是一个完全二叉树。利用了完全二叉树的性质,即完全二叉树节点x的子节点编号为2x和2x+1。 利用这个性质,我们可以让一个一维数组来模拟这个二叉树,数组下标从1开始建立,下标为2*x和2*x+1的就是x的左子树和右子树。 #incl ...
分类:
编程语言 时间:
2020-02-08 17:57:21
阅读次数:
130
前言 二叉堆分为最大堆与最小堆,一组不规则的完全二叉树或者近完全二叉树,可以通过调整称为二叉堆。 序列化: 形成二叉堆通过下沉。 插入元素通过上浮。 排序: 二叉堆的最大堆为父节点一定大于或者等于子节点,堆顶一定最大。 如果最小堆的堆顶与最后一个元素交互,那么最后一个元素一定最大。 如果最后一个元素 ...
分类:
编程语言 时间:
2020-02-08 11:22:27
阅读次数:
77
10种排序算法的Java实现 分类 基于比较的排序算法 冒泡排序,选择排序,插入排序,希尔排序,归并排序,快速排序,堆排序 非比较的排序算法 计数排序,桶排序,基数排序 稳定的排序算法 冒泡排序,插入排序,归并排序,计数排序,桶排序,计数排序 不稳定的排序算法 选择排序,希尔排序,快速排序,堆排序 ...
分类:
编程语言 时间:
2020-02-04 15:31:38
阅读次数:
69
归纳 1.时间复杂度为o(n^2) 冒泡排序 选择排序 插入排序 希尔排序 2.时间复杂度为o(nlogn) 快速排序 归并排序 堆排序 3.时间复杂度为线性排序 计数排序 桶排序 基数排序 ...
分类:
编程语言 时间:
2020-02-02 11:33:32
阅读次数:
66
堆排序 快速排序 代码与知识点均学习自AcWing:https://www.acwing.com/activity/ ...
分类:
编程语言 时间:
2020-02-01 12:32:23
阅读次数:
74
区间问题: LeetCode56:已知多个区间,将这些区间有相交的区间进行合并,输出有序的合并结果。 排序问题: LeetCode75:荷兰国旗问题,多种解法,双指针法巧妙。 关于排序问题,面试肯定基本不考基本的排序,因为C++有sort,因此需要考虑一些特殊的情况:尤其是桶排序,计数排序,堆排序, ...
分类:
其他好文 时间:
2020-01-29 19:48:32
阅读次数:
76
堆排序算法。堆堆又被称为优先队列。按照元素的优先级取出元素。普通队列:先进先出;后进后出优先队列:出队顺序和入队顺序无关;和优先级相关在优先队列的内部,元素的次序却是由”优先级”来决定的:高优先级的元素排在队首,而低优先级的元素排在后面。优先队列入队操作比较复杂,需要将元素根据优先级尽量排到队列前面... ...
分类:
编程语言 时间:
2020-01-29 12:12:14
阅读次数:
94
利用堆排序很容易进行查找 质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。 质因数(素因数或质因子)在数论里是指能整除给定正整数的质数。除了1以外,两个没有其他共同质因子的正整数称为互质。因为1没有质因子,1与任何正整数(包括1本身)都是互质 把只 ...
分类:
其他好文 时间:
2020-01-27 21:50:33
阅读次数:
97
![](https://img2018.cnblogs.com/blog/1853166/202001/1853166-20200127184321835-1396957852.png) ![](https://img2018.cnblogs.com/blog/1853166/202001/1853... ...
分类:
编程语言 时间:
2020-01-27 18:55:08
阅读次数:
101
大三找实习花了大概半个月的时间,最后选择了商汤,因为面试体验最好,从第一轮面试到拿到口头 offer 只用了两天,第二轮结束两个小时就发了,正式 offer 也仅用了两天,感觉效率很高,而且也算是一个不错的成长平台。 我面试的是 Java 后台开发,一共两轮技术面,整体难度适中,面试官很和蔼,而且在 ...
分类:
编程语言 时间:
2020-01-24 00:15:02
阅读次数:
111