摘要:
假设这样一个情景:在银行的营业厅内先后进来3个人,他们都要进行存款,若是只有一个营业窗口的话,通常的情况是每人都需要先领取顺序条,然后按序排队办理业务,而营业厅会根据号码的顺序依次叫号来处理顾客的问题。 在这里银行的窗口就可以看做共享的资源,它每次只能接待一个顾客,而不同的顾客则可以看做是多个... 阅读全文
摘要:
堆排序分为两个过程,一个建堆的过程,一个是从堆顶取数的过程。这里针对第一个过程,给出在堆的形式是完全满二叉树的情况下,建堆复杂度Ο(n)的简单推导。 上图是一个完全满二叉树,假设一个完全满二叉树的节点数为n,树高为h(共h层),则满足h = log(n + 1)。由堆的构建过程可以知道,第... 阅读全文
摘要:
太原理工大学有一门数据结构的精品课程,课程给出了栈和队列、线性表、树、图以及查找和排序的算法演示过程。 http://www.tyut.edu.cn/kecheng1/site01/suanfayanshi/default.asp图: (1)拓扑排序算法思想:选一个入度为 0 的顶点输出,并... 阅读全文
摘要:
下面总结几种常见的排序算法,包括插入排序、选择排序、快速排序、归并排序和堆排序。时间复杂度:插入排序选择排序快速排序归并排序堆排序Ο(n2)Ο(n2)Ο(nlog(n))Ο(nlog(n))Ο(nlog(n))算法概述:插入排序:每次从未排好序的数据堆中拿出一个数,插入到已排好序的数据队列的正确... 阅读全文
摘要:
实现一个函数,检查二叉树是否平衡,平衡的定义如下,对于树中的任意一个结点,其两颗子树的高度差不超过1。给定指向树根结点的指针TreeNode*root,请返回一个bool,代表这棵树是否平衡。import java.util.*;/*public class TreeNode { int ... 阅读全文