码迷,mamicode.com
首页 >  
搜索关键字:二叉树 堆排序    ( 12327个结果
快速排序、堆排序和归并排序的实现
1、快速排序 通过选择轴值,一次划分都能确定该轴值得位置,其时间复杂度最好的情况(每次划分都恰好将区间平分为等长的两半)下为Ο(nlgn),最差情况(每次划分将区间分成0与n-1)为O(n^2)。其空间复杂度考虑递归的栈深为O(lgn)。 1 /********************...
分类:其他好文   时间:2014-05-16 19:24:46    阅读次数:361
LeetCode OJ - Sort List
题目: Sort a linked list inO(nlogn) time using constant space complexity.解题思路: 复杂度为O(n* logn) 的排序算法有:快速排序、堆排序、归并排序。对于链表这种数据结构,使用归并排序比较靠谱。递归代码如下:代码: /...
分类:其他好文   时间:2014-05-16 05:49:04    阅读次数:266
排序 之 堆排序 归并排序
堆的概念 堆是具有下列性质的完全二叉树:每个节点的值都大于或等于其左右孩子结点的值,称为大顶堆;或着每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。 堆排序 堆排序(Heap Sort)就是利用堆(假设利用大顶堆)进行排序的方法。它的基本思想是,将待排序的序列构造成一个大顶堆。此时,整个序列...
分类:其他好文   时间:2014-05-15 16:18:31    阅读次数:329
Leetcode 树 Populating Next Right Pointers in Each Node II
题意:给定一棵任意二叉树(不一定是perfect binary tree),将它每一个节点的next指针都指向该节点右边的节点 思路:bfs 这里不能用dfs了,只能用bfs bfs遍历将同一层的节点存放在同一个数组里, 然后在遍历每个数组,将前面的节点和后面的节点connect起来, 最后一个节点和NULL connect起来 需要定义一个新的struct结构,保存指向每个节点的指针和该节点所在的层 复杂度:时间O(n), 空间O( n)...
分类:其他好文   时间:2014-05-15 06:12:13    阅读次数:294
Pat(Advanced Level)Practice--1043(Is It a Binary Search Tree)
Pat1043代码 题目描述: A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties: The left subtree of a node contains only nodes with keys less than t...
分类:其他好文   时间:2014-05-15 05:09:59    阅读次数:351
[leetcode]Binary Tree Level Order Traversal @ Python
原题地址:http://oj.leetcode.com/problems/binary-tree-level-order-traversal/题意:二叉树的层序遍历的实现。解题思路:二叉树的层序遍历可以用bfs或者dfs来实现。这里使用的dfs实现,代码比较简洁。实际上,二叉树的先序遍历就是dfs实...
分类:编程语言   时间:2014-05-14 03:25:59    阅读次数:428
c++ STL set 集合的常见用法
http://blog.163.com/jackie_howe/blog/static/199491347201231691525484/set集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键...
分类:编程语言   时间:2014-05-13 21:45:21    阅读次数:333
算法导论第六章 堆排序
建堆的时间复杂度是O(n),堆排序的时间复杂度是O(NLogN),具体算法如下所示: #include using namespace std; void swap(int &i,int &j) { int temp=i; i=j; j=temp; } void shiftDown(int *A, int start,int len) { int temp=A[...
分类:其他好文   时间:2014-05-13 13:55:15    阅读次数:270
蓝桥杯——说好的进阶之多叉树的遍历
多叉树,简单地说,与二叉树类似,但叉可能要多的树形结构;类似于计算机文件目录。...
分类:其他好文   时间:2014-05-13 07:45:33    阅读次数:188
堆排序
堆排序分为两个阶段:1、将原始数组组装成一个堆;2、从堆顶逐个取出元素并得到排序结果。(如果是最大堆,则是重复删除最大元素,然后从后往前放入到数组。) 用sink()只需扫描数组中的一半元素。 堆排序可以不需要额外的空间,最优的利用空间和时间。可用于嵌入式系统。缺点:无法利用缓存,影响缓存命中。...
分类:其他好文   时间:2014-05-13 05:43:27    阅读次数:207
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!