java技术栈 1 java基础: 1.1 算法 1.1 排序算法:直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序 1.2 二叉查找树、红黑树、B树、B+树、LSM树(分别有对应的应用,数据库、HBase) 1.3 BitSet解决数据重复和是否存在等问题 1. ...
分类:
编程语言 时间:
2017-08-12 14:02:40
阅读次数:
219
这道题跟Insertion Sort List类似,要求我们用O(nlogn)算法对链表进行排序,但是并没有要求用哪一种排序算法,我们可以使用归并排序,快速排序,堆排序等满足要求的方法来实现。对于这道题比较容易想到的是归并排序,因为我们已经做过Merge Two Sorted Lists,这是归并排 ...
分类:
其他好文 时间:
2017-08-07 15:23:46
阅读次数:
138
packagecom.java.algorithm.test;
importorg.junit.Test;
importjava.util.Arrays;
publicclassHeapSortTest{
@Test
publicvoidtestHeapSort(){
int[]A=newint[]{4,1,3,2,16,9,10,14,8,7};
this.heapSort(A);
System.out.println(Arrays.toString(A));
}
publicintleft(int..
分类:
编程语言 时间:
2017-08-07 01:29:56
阅读次数:
151
阿里巴巴2016研发project师笔试选择题 1.将整数数组(7-6-3-5-4-1-2)依照堆排序的方式原地进行升序排列,请问在第一轮排序结束之后,数组的顺序是_____。 阿里巴巴2016研发project师笔试选择题 1.将整数数组(7-6-3-5-4-1-2)依照堆排序的方式原地进行升序排 ...
分类:
编程语言 时间:
2017-08-06 14:59:30
阅读次数:
174
堆排序 ①了解二叉堆的定义 ②一般用数组表示堆 注意逻辑存储结构和实际存储结构 ③i节点的 父节点(i-1)/2 子节点 左2*i+1 右2*i+2 ④注意每种操作的思想 ⑤一般数组要堆化操作后再进行堆排序 代码实现 /*本栗子是最小堆*//*从第i个节开始调整*/ void MinHeapDown ...
分类:
编程语言 时间:
2017-08-06 00:20:24
阅读次数:
246
堆排序: n*log(n)的时间复杂度, 非稳定排序,原地排序。 它的思想是利用的堆这种数据结构,堆可以看成一个完全二叉树,所以在排序中比较的次数可以做到很少。 加上他也是原地排序,不需要申请额外的空间,效率也不错。 堆的重要特点是每一次循环都会建立新的最大或最小堆。 ...
分类:
编程语言 时间:
2017-08-05 23:37:00
阅读次数:
192
对n较大的排序记录。一般的选择都是时间复杂度为O(nlog2n)的排序方法。 时间复杂度来说: (1)平方阶(O(n2))排序 各类简单排序:直接插入、直接选择和冒泡排序;(2)线性对数阶(O(nlog2n))排序 快速排序、堆排序和归并排序;(3)O(n1+§))排序,§是介于0和1之间的常数。 ...
分类:
编程语言 时间:
2017-08-02 00:44:06
阅读次数:
230
线性查找分为顺序查找、折半查找。 顺序查找: 折半查找: 第一: 数组必须有序,不是有序就必须让其有序。 第二: 这种查找只限于线性的顺序存储结构。 线性查找时间复杂度:O(n); 折半无序(用快排或堆排)的时间复杂度:O(NlogN)+O(logN); 折半有序的时间复杂度:O(logN); 哈希 ...
分类:
其他好文 时间:
2017-08-02 00:27:34
阅读次数:
108
冒泡排序 O(n^2) 选择排序 O(n^2) 插入排序 O(N) 计数排序 稳定性 面试题 1. 2. 改写为非递归版本的堆排序 3. 4. 0 2区 5. O(m+n) O(1) 向左 向下移动 6. 最右位置为4 7. ...
分类:
编程语言 时间:
2017-08-01 14:20:42
阅读次数:
132
Top K的问题: 给出大量数据,找出其中前K个最大(小)的数,或者在海量数据中找到出现频率最好的前K个数。 一、给出大量数据(N个),找出其中前K个最大数(没有其他资源上的限制) 1、使用排序算法 直接使用排序算法,如快速排序,然后遍历找到最大的K个数。时间复杂度为O(NlogN); 2、部分排序 ...
分类:
其他好文 时间:
2017-07-31 23:56:17
阅读次数:
317