前言 推排序中的小顶堆的建立,需要注意的是,哪怕是相同的数,不同的插入顺序最终建立堆都不一样。 题目 将一系列给定数字插入一个初始为空的小顶堆 。随后对任意给定的下标 ,打印从 到根结点的路径。 输入格式 组测试第1行包含2个正整数N和M(≤1000),分别是插入元素的个数、以及需要打印的路径条数。 ...
分类:
编程语言 时间:
2020-04-19 15:05:09
阅读次数:
184
堆排序,快速排序的时间复杂度为nlog(n)。他们都是运用比较排序的结果。好比决策树模型。 属于线性时间排序的算法有:计数排序,基数排序和桶排序。 计数排序: 先分别求出每个元素的频数,不过如果元素值较大时,比较浪费内存空间。 def Counting_Sort(A,B,k): for i in r ...
分类:
编程语言 时间:
2020-04-17 21:52:51
阅读次数:
68
简述 选择排序的基本思想是:每一趟从待排序列中选取关键字最小的元素,作为有序序列的一个新的元素,直到待排序列只剩下一个元素,则完成排序。主要算法有简单选择排序和堆排序。 简单选择排序 算法思想 假设序列为L[1...n],第i趟排序从L[i...n]中选择最小的元素与L(i)交换,因此每一趟可以确定 ...
分类:
编程语言 时间:
2020-04-17 20:06:43
阅读次数:
83
目录 1. 各种算法的比较 2. 算法不稳定定义 3. 不稳定的几种算法 1. 各种算法的比较 2. 算法不稳定定义 定义:在排序之前,有两个数相等,但是在排序结束之后,它们两个有可能改变顺序. 说明:在一个待排序队列中,A和B相等,且A排在B的前面,而排序之后,A排在了B的后面.这个时候,我们说这 ...
分类:
其他好文 时间:
2020-04-14 12:27:44
阅读次数:
68
概念 分为大顶堆和小顶堆,是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以用到上一次的排序结果,所以不像其他一般的排序方法一样,每次都要进行n-1次的比较,复杂度为O(nlogn)。 完全 ...
分类:
编程语言 时间:
2020-04-14 12:16:52
阅读次数:
82
环形队列优先队列 二叉树两种存储方式:链表,数组 二叉查找树:左子树比根节点大,右子树比根节点小二叉树自平衡 遍历深度优先遍历(前序,中序,后序)(递归实现,或者是栈,能用递归的都可以用栈)广度优先遍历(层序遍历)(用队列实现) 二叉堆:要求根节点比左右节点大,是一种特殊的完全二叉树,用数组存储最大 ...
分类:
其他好文 时间:
2020-04-11 23:31:37
阅读次数:
81
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), ...
分类:
其他好文 时间:
2020-04-11 18:56:31
阅读次数:
87
平衡二叉搜索树 二叉搜索树的问题: 添加:若从小到大添加元素,那么二叉搜索树将退化成链表 删除:删除节点时也可能会导致二叉搜索树退化成链表 平衡(Banlance) 平衡:当节点数量固定时,左右子树的高度越接近,这棵二叉树就越平衡(高度越低) 最理想的状态就是像完全二叉树、满二叉树那样,高度是最小的 ...
分类:
其他好文 时间:
2020-04-11 00:32:57
阅读次数:
70
堆(Heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵完全二叉树的数组对象。 两种类型的概念如下:大根堆(最大堆):每个结点的值都大于或等于左右孩子结点小根堆(最小堆):每个结点的值都小于或等于左右孩子结点 以大根堆为例子:【堆是无序的】 堆的三种操作:插入,删除,构建。 ...
分类:
编程语言 时间:
2020-04-09 19:06:52
阅读次数:
101
稳定性的定义与意义: 通俗地讲就是能保证排序前两个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。 如果是不稳定排序,则需要第二次排序,会增加系统开销。 选择排序: 举个例子,序列5 8 5 2 9,我们知道第一遍选择第1个元素5会和2交换,那么原序列中2个5的相对前后顺序就被破坏 ...
分类:
编程语言 时间:
2020-04-09 12:59:31
阅读次数:
136