[TOC] 题目1–前k大问题 题目:从一组元素(n个)中找出前k大个元素。 这题和PTA 7 5 选做 寻找大富翁差不多,7 5的提交情况: 代码 代码: ...
分类:
编程语言 时间:
2020-05-24 19:31:40
阅读次数:
55
# 堆排序的向下调整性 # 排序步骤:建堆 交换堆顶元素和最后一个元素 调整使堆重新有序 i的指向前移(i指向最后一个元素)重复2以后的步骤 # 交换步骤将堆中的最大元素移动到了堆的最后位置,排序完成后,得到的是一个升序序列 # 大根堆的排序 # 向下调整 def sift(li,low,high) ...
分类:
编程语言 时间:
2020-05-24 11:46:57
阅读次数:
66
什么是堆 堆是一个近似 完全二叉树 的结构, 并同时满足 堆积的性质 :即子结点的键值或索引总是小于(或者大于)它的父节点。 什么是堆排序 堆排序 (英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。 实现大顶堆 首先我们需要找到所有的非叶子结点,通过完全二叉树的性质我们知道 若父 ...
分类:
编程语言 时间:
2020-05-23 18:40:01
阅读次数:
65
最近正在重新看算法,记录关于堆排的一些特性和个人理解; 设:初始数组 5 0 6 8 2 代码清单: public static void heapInsert(int[] arr, int index) { //将数组转换成为大根堆的形式 //找父节点 while (arr[index] > ar ...
分类:
编程语言 时间:
2020-05-21 13:16:29
阅读次数:
64
```javapublic class HeapSort implements SortAlgorithm { @Override public void sort(int[] nums) { if (nums == null || nums.length == 0) return; // 构建最大... ...
分类:
编程语言 时间:
2020-05-20 12:23:16
阅读次数:
52
什么是堆 堆 首先是一个完全二叉树, 堆 分为 大顶堆 和 小顶堆 ; 大顶堆 : 每个节点的值大于或等于其左右孩子节点的值,称为大顶堆。 小顶堆 同理就是每个节点的值小于或等于其左右孩子节点的值。 注意 : 每个节点的左右孩子节点的大小关系并没有限定。 大顶堆举例 如图: 首先其为一个完全二叉树, ...
分类:
编程语言 时间:
2020-05-19 18:10:55
阅读次数:
74
快速排序 时间复杂度:O(nlogn) def partition(li, left, right): tmp = li[left] while left < right: while left < right and li[right] >= tmp: # 从右边找比tmp小的数 right -= ...
分类:
编程语言 时间:
2020-05-17 17:45:40
阅读次数:
64
堆排序 大根堆,小根堆:所有非叶子节点大于或者小于其孩子节点。 用大根堆进行从小到大的排序 建立大根堆:从下往上,从右往左遍历非叶子节点,判断其是否符合大根堆性质,若不符合,则交换节点位置,直至建出大根堆。 大根堆根节点一定是被排序的这段数值的最大值,交换堆尾堆首数值,堆尾指针前移(有没有冒泡的感觉 ...
分类:
编程语言 时间:
2020-05-16 12:18:49
阅读次数:
77
百度大数据实习生:(百度科技园一号楼) 2018-3-31 笔试: 1.双指针的题 2.找出字符串中第一个出现两次的字母 3.通过前中序求二叉树 4.快速排序,堆排序 5.数据库的左右连接 面试: 1.MapReduce分几步,shuffle原理 2.hive 的知识 3.数据库,数据仓库 4.代码 ...
分类:
其他好文 时间:
2020-05-14 01:50:12
阅读次数:
77