不稳定 O(nlogn) 大顶堆(从大到小排序):每个结点的值都大于等于其左右孩子的值的二叉树 小顶堆(从小到大排序):每个结点的值都小于等于其左右孩子的值的二叉树 如何排序? 将待排序序列构建成一个小顶堆,堆顶的元素即为所有元素中的最小值 在输出堆顶的最小值之后,调整堆,使剩余的n-1个元素又建成 ...
分类:
编程语言 时间:
2018-08-30 01:56:19
阅读次数:
204
堆的简单理解 以k1,k2,k3,k4.....kn为示例: 对于任意存在子节点的ki,k(2i)是其左子树节点,k(2i+1)是其右子树节点, 大堆序满足条件,k(i) >=k(2i) && k(i)>=k(2i+1) (1 ≤ i ≤ n/2) 小堆序满足条件,k(i) <= k(2i)且k(i ...
分类:
编程语言 时间:
2018-08-25 14:16:29
阅读次数:
145
排序是一个你想的越久,就会越明白的脑洞,快速排序和堆排序是研究最久的,它开始让我觉得程序寥寥数行,却透彻着开发者精妙的思想。 废话不多说,摆代码: ...
分类:
编程语言 时间:
2018-08-24 00:29:23
阅读次数:
143
堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。 堆排序是就地排序,辅助空间为O(1)。 它是不稳定的排序方法。(排序的稳定性是指如果在排序的序列中,存在前后相同的两个元素的话,排序前 和排序后他们的相对位置不发生变化) 先说说什么是堆,堆通常是一个可以被看做一棵 ...
分类:
编程语言 时间:
2018-08-23 12:04:36
阅读次数:
215
数据结构实验之排序四:寻找大富翁 Time Limit: 200 ms Memory Limit: 512 KiB Problem Description 2015胡润全球财富榜调查显示,个人资产在1000万以上的高净值人群达到200万人,假设给出N个人的个人资产值,请你快速找出排前M位的大富翁。 ...
分类:
编程语言 时间:
2018-08-21 20:16:26
阅读次数:
212
阿里云弹性计算团队春招实习内推面试+阿里云盘古团队秋招内推面试。 (实习内推面试挂在二面,秋招内推面试已经面完四轮) 首先是学长帮忙内推了他们组的春招实习,过程十分坎坷。18年春节前阿里云的一个SDN团队招实习生,我报名了,接受了内推,在第一次面试后就挂掉(不太明白为啥),但是由于每个人一个批次只能 ...
分类:
其他好文 时间:
2018-08-18 00:49:56
阅读次数:
169
java架构师最全技能图谱上篇,包含:数结构算法、java进阶、web开发、框架与工具四大技能图谱。
下篇将包含大数据以及性能、设计模式、UML、中间件、分布式集群、负载均衡、通讯协议、架构设计等技术图谱等章节
本文作者,陈睿 优知学院创始人,免费提供系统的互联网产品技术进阶干货资料和课程,以及定期的线下实战活动。
分类:
编程语言 时间:
2018-08-13 18:07:29
阅读次数:
235
1.二分查找 2.冒泡排序 3.插入排序 4.快排 思路:取第一个元素P,使P先归位,列表被P分成两部分,左边的都比元素P小,右边的都比元素P大。之后递归完成排序 5.堆排序 思路: 1.建立堆 2.得到堆顶元素,为最大元素 3.去掉堆顶,将堆最后一个元素放到堆顶,此时可通过一次调整重新使堆有序。 ...
分类:
编程语言 时间:
2018-08-11 14:36:32
阅读次数:
117
#堆排序升序: #include #include #include using namespace std; #define parent(i) (i)/2 #define left(i) 2*(i) #define right(i) 2*(i)+1 int size; void heapify(... ...
分类:
编程语言 时间:
2018-08-10 15:57:36
阅读次数:
126
排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序。 常见的排序算法:冒泡、快排、插入、希尔、选择、堆排、归并。1、冒泡排序原理:一个无序数组,按照升序排列。int i 代表循环的次数,int j 代表数组的下标,if(arr[j]>arr[j+1]),交换位置,依次类推。每循
分类:
编程语言 时间:
2018-08-09 22:05:49
阅读次数:
182