算法导论学习-heapsort】的更多相关文章

heap的定义:如果数组a[1,....n]满足:a[i]>a[2*i] && a[i]>a[2*i+1],1<=i<=n/2,那么就是一个heap,而且是max-heap heap有两种,max-heap 和 min-heap,其中min-heap的性质与上面所述相反,即 a[i]<a[2*i] && a[i]<a[2*i+1]. 这里以max-heap为例说明heap的三种基本操作,即Max-Heap-Maintenance, Bui…
前面我们学习二叉搜索树的时候发如今一些情况下其高度不是非常均匀,甚至有时候会退化成一条长链,所以我们引用一些"平衡"的二叉搜索树.红黑树就是一种"平衡"的二叉搜索树,它通过在每一个结点附加颜色位和路径上的一些约束条件能够保证在最坏的情况下基本动态集合操作的时间复杂度为O(nlgn).以下会总结红黑树的性质,然后分析红黑树的插入操作,并给出一份完整代码. 先给出红黑树的结点定义: #define RED 1 #define BLACK 0 ///红黑树结点定义,与普通…
转载自:http://blog.csdn.net/speedme/article/details/24231197 1. 什么是动态规划 ------------------------------------------- dynamic programming is a method for solving complex problems by breaking them down into simpler subproblems. (通过把原问题分解为相对简单的子问题的方式求解复杂问题的…
一. 关于最小生成树 对于无向连通图G=(V,E),其中V表示图的顶点,E表示图的边,对于每条边都有一个权值,可以理解为边a->b的权值C为从a走到b要走的路程为C.现在我们希望找到一个无回路的子集T,且有T是E的子集,T连接了所有的顶点,且其权值和最小.那么这样一个子图G‘=(V,T)称之为图G的最小生成树. 二. 最小生成树的基本性质 最小生成树的边数|T|必然服从|T|=|V|-1. 最小生成树不可以有循环 最小生成树不必是唯一的. 三. Prim算法 对于最小生成树有两种算法:prim算…
1. 红黑树(RED-BLACK TREE)引言: ------------------------------------- 红黑树(RBT)可以说是binary-search tree的非严格的平衡版本.与之相应的是平衡二叉树(Balanced Binary Tree)又称之为AVL树(因为是G.M. Adelson-Velsky 和 E.M. Landis在1962年发明的这棵树)是binary-search tree的严格的平衡版本. BST达到最平衡的状态称之为AVL.在AVL树中任何…
1. 概念: Binary-search tree(BST)是一颗二叉树,每个树上的节点都有<=1个父亲节点,ROOT节点没有父亲节点.同时每个树上的节点都有[0,2]个孩子节点(left child AND right child).每个节点都包含有各自的KEY值以及相应的satellite data.其中KEY是几种BST基本操作的主要操作对象. 2. BST的特别性质: BST任何一颗子树上的三个节点left, parent, right. 满足条件left.key<parent.key…
对于曾经,假设要我求第k小元素.或者是求前k大元素,我可能会将元素先排序,然后就直接求出来了,可是如今有了更好的思路. 一.线性时间内求第k小元素 这个算法又是一个基于分治思想的算法. 其详细的分治思路例如以下: 1.分解:将A[p,r]分解成A[p,q-1]和A[q+1,r]两部分.使得A[p,q-1]都小于A[q],A[q+1,r]都不小于A[q]; 2.求解:假设A[q]恰好是第k小元素直接返回,假设第k小元素落在前半区间就到A[p,q-1]递归查找.否则到A[q+1,r]中递归查找. 3…
平台:Ubuntu 12.04/gcc 4.6.7 插入排序 #include<vector> #include <algorithm> #include<iostream> using namespace std; template <typename T> void insertSort(vector<T>& vec){ //vector<T>::iterator ite; ;j<vec.size();j++) {…
开始学习<算法导论>了,虽然是本大部头,可能很难一下子看完,我还是会慢慢地研究的. 课后的习题和思考有些是很有挑战性的题目,我等蒻菜很难独立解决. 然后发现了Google上有挺全的algorithmssolution的site (目测by xiazdong大神). 但竟然要FQ实在是难以接受. 于是我决定开坑!把它们慢慢地搬运过来,当然这之中我会从中学习并好好研究的. 我会慢慢更新搬运过来的地址的,这是一个大坑,请容我慢慢填. Chapter 22.1-1(入度和出度) Chapter 22.…
一.什么叫最小生成树 一个无向连通图G=(V,E),最小生成树就是联结所有顶点的边的权值和最小时的子图T,此时T无回路且连接所有的顶点,所以它必须是棵树. 二.为什么要研究最小生成树问题 <算法导论>上举了电子线路设计的例子.而在经济学.生物学中也常应用最小生成树. 三.如何求一个无向连通图的最小生成树 <算法导论>中提取讲解了两种得到最小生成树的算法,一是Kruskal算法,另一种是Prim算法.这两种算法都使用了贪心策略. 先说明几个概念: 安全边:A是G的某最小生成树的子集,…