树定义
专业定义:有且只有一个称为根的节点,有若干个互不相交的子树,这些子树的本身也是一棵树。
通俗的定义:树是由节点和边组成;每个节点只有一个父节点但可以有多个子节点;但有一个节点例外,该节点没有父节点,此节点称为根节点。
专业术语
节点 父节点 子节点 子孙 堂兄弟 深度
深度:从根节点到底层节点的层数称之为深度。根节点是第一层.
叶...
分类:
其他好文 时间:
2014-08-30 20:30:30
阅读次数:
283
1 无顺序的一个数组求最大的k个数
1)先用快速排序对数组排序在找前k个;
2) 先建立k小顶堆,再扫描整个数组,堆顶为k个数中最小的数;
/************************************/
//寻找在数组中最大的K个数
//小顶堆插入
void constructHeap(int a[],int n,int value){
a[n] = value;
i...
分类:
其他好文 时间:
2014-08-29 16:10:48
阅读次数:
220
//汉诺塔
void Hanoi(int n,string A,string B,string C){
if(n == 1)
cout"<<C<<endl;
else{
Hanoi(n-1,A,C,B);
cout"<<C<<endl;
Hanoi(n-1,B,A,C);
}
}
//递归实现
int maxNUm(int num[],int n){
if(1 ==...
分类:
其他好文 时间:
2014-08-29 11:03:07
阅读次数:
174
快速排序是一种平均性能很好的算法,它的期望运行时间是O(nlgn),且其中隐藏的常数因子非常小。但是它的最坏运行时间是O(n^2)。最后我会对其进行分析。快速排序关键部分分为两部分:
1.数组划分过程:
将一个数组以其最后一个元素作为主元,并且围绕它来划分数组,使得在此元素之前的数组元素均小于它,在其后的数组元素均大于它,划分过程如下:
实现代码如下:
int Partition(...
分类:
编程语言 时间:
2014-08-28 22:49:46
阅读次数:
390
快速排序是对冒泡法排序的一种改进。
排序思想:
通过一趟排序,将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小;再分别对这两部分记录进行下一趟分割排序,以达到整个序列有序,重复执行以上的划分操作,直 到所有要进行排序的数据变为有序为止。...
分类:
其他好文 时间:
2014-08-28 22:47:36
阅读次数:
385
最近忙着复习找工作,熟悉了下排序算法,动手写了一下,发现有些问题的边界条件还是没有考虑清楚,不过好在调试成功。不稳定排序:堆排序,快速排序,希尔排序;稳定排序:插入排序,冒泡排序,选择排序,归并排序,基数排序等。插入排序算法代码:void InsertSort(int A[],int n){ ...
分类:
其他好文 时间:
2014-08-28 19:39:25
阅读次数:
287
介绍一下快速排序方法,不能老是用冒泡排序方法。另外一些编程语言也有自己的排序方法,例如:AS有sort,在Array中有。但是我顺便说一句:在AS3中,不要轻易使用递归算法,你可以自己做一个Test,当你从1+2+3......一直加到50几的时候(用递归算法),那么程序就会被卡死,在AS..
分类:
其他好文 时间:
2014-08-28 18:15:56
阅读次数:
247
在很多语言中都提供了不定参数和函数重载以及函数式语言中得闭包来提高函数的灵活性。如果使用过fmt包里的函数,那么你就已经接触到了Golang的不定参数了。那么如何定义一个自己的不定参数的函数呢?一、函数定义首先来看如何定义一个不定参数的函数:funcYourFun(v...interfac..
分类:
其他好文 时间:
2014-08-28 09:48:49
阅读次数:
327
O(n log n)时间复杂度和常量地址空间下进行链表排序。
链表快速排序与链表的归并排序,以及两种性能对比思考。...
分类:
其他好文 时间:
2014-08-27 18:50:38
阅读次数:
239
【啊哈!算法】算法1:最快最简单的排序——桶排序
【啊哈!算法】算法2:冒泡排序
【啊哈!算法】算法3:八一八“快速排序”
【啊哈!算法】算法4:队列——解密QQ号
【啊哈!算法】算法5:解密回文——栈
【啊哈!算法】算法6:只有五行的Floyd最短路算法
【啊哈!算法】系列7:Dijkstra最短路算法
【啊哈!算法】算法8:巧妙的邻接表(数组实现)
【啊...
分类:
其他好文 时间:
2014-08-27 18:42:24
阅读次数:
257