1、快速排序
通过选择轴值,一次划分都能确定该轴值得位置,其时间复杂度最好的情况(每次划分都恰好将区间平分为等长的两半)下为Ο(nlgn),最差情况(每次划分将区间分成0与n-1)为O(n^2)。其空间复杂度考虑递归的栈深为O(lgn)。
1 /********************...
分类:
其他好文 时间:
2014-05-16 19:24:46
阅读次数:
361
题目: 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
题意:给定一棵任意二叉树(不一定是perfect binary tree),将它每一个节点的next指针都指向该节点右边的节点
思路:bfs
这里不能用dfs了,只能用bfs
bfs遍历将同一层的节点存放在同一个数组里,
然后在遍历每个数组,将前面的节点和后面的节点connect起来,
最后一个节点和NULL connect起来
需要定义一个新的struct结构,保存指向每个节点的指针和该节点所在的层
复杂度:时间O(n), 空间O( n)...
分类:
其他好文 时间:
2014-05-15 06:12:13
阅读次数:
294
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
原题地址:http://oj.leetcode.com/problems/binary-tree-level-order-traversal/题意:二叉树的层序遍历的实现。解题思路:二叉树的层序遍历可以用bfs或者dfs来实现。这里使用的dfs实现,代码比较简洁。实际上,二叉树的先序遍历就是dfs实...
分类:
编程语言 时间:
2014-05-14 03:25:59
阅读次数:
428
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