摘要: 基本知识: 堆的最基本的几种操作:建堆,时间复杂度为O(n),具体计算如下:假设有n=2^k个元素,从n/2元素开始, 以该点为根,使之成为一个堆; 然后再以n/2-1元素开始, 使之成为一个堆。。。,直到数组第1个元素,使之成为一个堆; 于是整个数组就成为一个堆了。杂度是2^(k-1) * 1 +... 阅读全文
posted @ 2012-03-22 21:40 GOD! 阅读(1428) 评论(2) 推荐(2) 编辑
摘要: 快排的几种方式与思想可以用到很多地方,直接看代码: View Code 1 #include 2 #include 3 4 /** AUTHOR: Mike Feng 5 * 快排,时间复杂度为O(nlgn),几种方法的实验,注意细节。 6 * ... 阅读全文
posted @ 2012-03-22 20:15 GOD! 阅读(267) 评论(0) 推荐(1) 编辑
摘要: 基本知识:堆的最基本的几种操作:建堆,时间复杂度为O(n),具体计算如下:假设有n=2^k个元素,从n/2元素开始, 以该点为根,使之成为一个堆; 然后再以n/2-1元素开始, 使之成为一个堆。。。,直到数组第1个元素,使之成为一个堆; 于是整个数组就成为一个堆了。杂度是2^(k-1) * 1 + .... + 2 * (k-1) + 1 * k ====>2^k ==> n 堆排序复杂度O(n*lgn)。另外,一个堆可以在O(lgn)时间内,支持大小为n的集合上的任意优先队列操作。应用——优先队列:鉴于堆的性质,可以应于优先队列,优先级队列是一种用来维护由一组元素构成的集合S的数 阅读全文
posted @ 2012-03-22 15:20 GOD! 阅读(153) 评论(0) 推荐(0) 编辑