#include <vector> #include <iostream> using namespace std; //最大堆 void adjust(int i, vector<int>& array,int length) { while (i >= 0 && i < length / 2) ...
分类:
编程语言 时间:
2020-02-13 17:36:19
阅读次数:
80
#堆排序#基本思想:1.将初始待排序数字列表(R1,R2,...,Rn)构建成大顶堆,此堆为初始的无序列表# 2.将堆顶元素R1与最后一个元素Rn交换,此时得到新的无序列表(R1,R2,...,Rn-1)和新的有序列表(Rn)# 3.由于交换后新的堆顶R1可能违反堆的性质,因此需要对当前无序列表(R ...
分类:
编程语言 时间:
2020-02-12 21:57:43
阅读次数:
72
学习自菜鸟教程,自己加以总结希望可以多多重复!!! 冒泡排序 选择排序 插入排序 希尔排序 快速排序 归并排序 堆排序 基数排序 1 //冒泡排序 O(n2) 2 public static void BubbleSort(int[] arr){ 3 int temp; 4 for(int i=0; ...
分类:
编程语言 时间:
2020-02-12 14:53:26
阅读次数:
78
堆排序算法就是通过维护一个小根堆或者大根堆的数据结构。小/大根堆本质上是一个完全二叉树。利用了完全二叉树的性质,即完全二叉树节点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