Algorithm--二分搜索
来源:互联网 发布:cbox中国网络电视 编辑:程序博客网 时间:2024/05/09 15:16
之前对hanoi塔的递归一直感到很恐惧,我记得原教材上花了好几张纸来描述和解释,一眼望去,满页的伪代码...回过头再看看,发现理解了它的主要思想,写起来是比较容易的,但是精髓至今仍唏嘘不已。那个将三个柱子作为参数并有选择性的调换位置来实现中转作用的方法,我觉得在没有前人脚印的指引下是很难想到的~废话少说。hanoi塔的代码网上很多,就不贴了。主要是理解思想,思想!!
这次要说的是二分搜索。即在有序数列中查找确定数值的一种分治算法,代码如下:
class BinarySearch
...{
private int equalIndex;
private int indexAdded;
public int EqualIndex
...{
get
...{
return equalIndex;
}
}
public BinarySearch()
...{
equalIndex = 0;
}
public void Search(int n, List<int> list)
...{
int center = list.Count / 2;
if (n == list[center])
...{
equalIndex = center + indexAdded;
return;
}
else
...{
if (n < list[center])
...{
Search(n, list.GetRange(0, center));
}
else
...{
indexAdded += center + 1;
Search(n, list.GetRange(center + 1, list.Count - center - 1));
}
}
}
}
...{
private int equalIndex;
private int indexAdded;
public int EqualIndex
...{
get
...{
return equalIndex;
}
}
public BinarySearch()
...{
equalIndex = 0;
}
public void Search(int n, List<int> list)
...{
int center = list.Count / 2;
if (n == list[center])
...{
equalIndex = center + indexAdded;
return;
}
else
...{
if (n < list[center])
...{
Search(n, list.GetRange(0, center));
}
else
...{
indexAdded += center + 1;
Search(n, list.GetRange(center + 1, list.Count - center - 1));
}
}
}
}
这里要注意的是,为了确保返回的位置是在原整个list中的位置,indexAdded的加入很重要。
- Algorithm--二分搜索
- Algorithm Review 3 二分搜索树
- Algorithm-A*搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- 二分搜索
- Delphi2005的新特性
- 网路版黑色豪门企业
- OnDraw与OnPaint的区别
- Ehlib表格区填满表格线的解决方案
- 关于OpenGL 3.0/4.0
- Algorithm--二分搜索
- Web MVC框架-命令及页面跳转
- 一个在DOS下处理中文和长名字目录和文件的程序(原创)
- 盯上好男人 服装业B2C暗战
- 不是Windows的错,Money惹的祸
- 在Eclipse里实现Ant自动编译
- Automatic Update prompting to download KB890859 again and again?
- 关于DSP中全局变量与局部变量的使用
- C++学习笔记