二叉查找树(一)
摘要:闲着无事,写写二叉查找树用C#的简单实现。 二叉查找树是二叉树的一种特别类型,特点是小值在父节点的左边,其余值在其右边,对排序、值查找有很好的支持。据说应用很广泛,但是我还没在项目中用到过。 1,结构分析 树由节点组成,首先对节点结构进行分析。这里使用双向链表的思想来确定节点与节点间的关系。 a,属性: 1,父级节点 2,左子节点 3,右子节点 4,节点数据为了方便,还加上HasChild属性、重写ToString方法。下面是泛型代码: public class TreeNode<T> { public T Data { get; set; } public TreeNode<
阅读全文
基础排序算法
摘要:1,冒泡排序 最慢的排序算法,基本上只是作为教科书的教学素材,没多少实用价值。还有就是好多公司用作面试题。其思想是比较相邻的两个值,大的值往右(或左)移动。 public void BubbleSort() { int temp = 0; for (int outer = 0; outer < upper; outer++) { for (int inner = 0; inner < upper - 1; inner++) { if (arr[inner] > arr[inner + 1]) { temp = arr[inner]; arr[inner] = arr[inne
阅读全文
基础查找算法
摘要:1,顺序查找法 虽然很简单,但很强大,当然只在小数量下。 2,改良型顺序查找法 现在很多的拼音输入法都有一个特性,像Google拼音,经常用到的字或词通常都在最前面,这就是大名鼎鼎的28规则的实际应用。把最常用的20%的字词放到最前面,是很睿智的做法,大多数情况下找到一个字不会要用户翻几下。如果有一个无序且不小的数组或列表的需要进行多次查找,那我们也可以把28规则用到项目中了,这样最经常被查找的数据都会集中前部,加快查找的速度。代码:public class Example { int[] arr; int upper; public int this[int index] { get { .
阅读全文