堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 根据根结点是否是最大值还是最小值和子结点的键值是否小于还是大于它的父结点可分为两种堆,如下: 1.大顶堆:每个结点的键 ...
分类:
编程语言 时间:
2019-08-18 23:39:47
阅读次数:
109
# 堆排序 def max_heap(heap,heapsize,i): # 构造最大堆(内部构建) left=2*i+1 right=2*i+2 larger=i if leftheap[larger]: larger=left if rightheap[larger]: larger=right... ...
分类:
编程语言 时间:
2019-08-18 21:27:15
阅读次数:
94
1、java gc 2、java class的加载过程 3、java hashmap、 为什么用红黑树、红黑树邻接点为啥是8 。 4、拜占庭问题 5、一致性哈希 6、如何控制负载均衡。 7、http码 302 403 。 8、https 加密过程。 9、操作系统虚存实现原理,交换,覆盖区别。 10、 ...
分类:
其他好文 时间:
2019-08-07 22:45:04
阅读次数:
144
稳定的排序算法:冒泡排序、插入排序、归并排序和基数排序。 不是稳定的排序算法:选择排序、快速排序、希尔排序、堆排序。 冒泡 选择 选择排序的思想是将序列分为有序和无序两个部分,不断从无序序列中选择最小的增加到有序序列中,这样,序列就从小到大排列整齐。 插入排序 插入排序原理是将当前元素与前面的元素比 ...
分类:
编程语言 时间:
2019-07-27 15:41:20
阅读次数:
127
在顺序表中: 顺序查找法:最坏情况下比较n次 查找最大项:最坏情况下比较n-1次 快速排序: 最坏情况下比较n(n-1)/2次 冒泡排序: 最坏情况下比较n(n-1)/2次 堆排序: 最坏情况下比较nlog2n ...
分类:
其他好文 时间:
2019-07-26 19:40:57
阅读次数:
118
把内容过程中比较重要的一些内容片段做个备份,如下的资料是关于Java排序算法 - 堆排序的内容。 import java.util.Arrays; public class HeapSort { int a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62, ...
分类:
编程语言 时间:
2019-07-23 13:42:02
阅读次数:
97
DAY 3 数据结构 1.堆 Priority_queue 大根堆 Priority_queue<int , vector<int> , greater<int> > 小根堆 支持插入一个值,删除最大/最小值 它重载了运算符或函数类 堆排序 P1090 合并果子 哈夫曼树 2.LCA(最近公共祖先) ...
分类:
其他好文 时间:
2019-07-22 09:57:09
阅读次数:
128
1 #include 2 using namespace std; 3 int n; 4 int a[100]; 5 6 void update(int x,int m)//下沉 7 { 8 int l=x*2; 9 if(l>m)return; 10 if(la[x])swap(a[l],a[x]... ...
分类:
编程语言 时间:
2019-07-20 21:32:30
阅读次数:
105
这是一个快速排序的模板题。拿到题后便写了quicksort(确定一个基准数,利用两个哨兵,把大的放右边,小的放左边,再递归实现排序),但是竟然TLE了60pts(???),于是翻看dalao们的题解,发现了堆排序(在清北学会了,但是一个学期后给忘了),然后看到了一个multiset(set去重,它不 ...
分类:
编程语言 时间:
2019-07-19 20:53:46
阅读次数:
111
这里先简单说下最大堆的基本性质: 最大堆一定是完全二叉树 当父节点为 n 时,左孩子为 n 2 + 1,右孩子为 n 2 + 2 当孩子为 n 时,其父节点为: (n 1) / 2 这一点很重要,在后面初始化的时候会用到 父节点大于等于左孩子和右孩子,但左孩子不一定大于右孩子 了解以上基本性质之后, ...
分类:
编程语言 时间:
2019-07-16 08:27:45
阅读次数:
79