《数据结构与算法C#语言描述》笔记4_基础查找算法
2012-10-07 23:47
302 查看
四.基础查找算法
顺序查找(线性查找)
集合无序状态下进行顺次查找。“80-20”规则
在数据集合上80%的查找操作都是为了查找数据集合20%的数据。这样的概率分布,被称为帕累托(Pareto)分布。自组织将最终把20%的数据集放在数据集合的开始部分,这样顺序查找可以快速找到。
自组织数据加快顺序查找
基于“80-20”法则,有两种方法实现加快查找。static
void swap<T>(refT item1,ref T item2)
{
T temp = item1;
item1 = item2;
item2 = temp;
}
1.位置在前20%外的目标元素和第一个元素进行位置交换
intfindvalue=64;for(int i = 0; i < a.Length; i++)
{
if(a[i] == findvalue)
{
if((double)i > (double)(a.Length* 0.2))
{ swap<int>(ref a[i],ref a[0]); }
}
}
2.目标元素位置提前一个
for(int i = 0; i < a.Length; i++){
if(a[i] == findvalue)
{
if(i > 0)
{ swap<int>(ref a[i],refa[i-1]); }
}
}
二叉树查找
有序排列的集合,始终判断中间点数值的大、小、等于。递归二叉树算法
递归算法始终比迭代算法慢。findIndex = RecursionRbinSearch(a,37,0,a.Length-1);
intRecursionRbinSearch(int[] a,int value,
int lower,int upper)
{
if(lower > upper)
{ return-1; }
else
{
intmid = (int)(upper + lower) / 2;
if(a[mid] == value)
{ returnmid; }
elseif (value < a[mid])
{ returnRecursionRbinSearch(a, value, lower, mid - 1); }
else
{ returnRecursionRbinSearch(a, value, mid + 1, upper); }
}
}
迭代二叉树算法
?Array类的内置二叉树查找方法
public staticintBinarySearch<T>(T[] array, T value);例:
intfindIndex =
Array.BinarySearch<int>(a, 4);
相关文章推荐
- 《数据结构与算法C#语言描述》笔记3_基础排序算法
- jQuery基础学习笔记(1)
- 笔记整理(java基础二---常量,变量...数组)
- 大龄屌丝自学笔记--Java零基础到菜鸟--003
- Java基础笔记
- Python基础视频学习笔记之(一)
- 【学习笔记】Python基础-aiohttp
- Java学习笔记基础篇----接口与多态
- 黑马程序员 java编程基础知识笔记
- Java 基础一些代码练习笔记(继承+接口+多态)
- linux学习笔记16-linux基础练习三
- 《JAVA2核心技术 卷一 基础知识(原书第七版)》《Core java2,Volume I-Fondamentsls Seven Edition》 学习笔记(一)
- java 从零开始,学习笔记之基础入门<异常>(十五)
- [Ruby笔记]2. ruby基础的基础: irb --simple-prompt / puts print p/ false nil
- Python学习笔记(三十九)— 内置模块(8)XML基础
- react native 开发基础=javaScript=学习笔记----函数
- Coursera台大机器学习基础课程学习笔记1 -- 机器学习定义及PLA算法
- object-c最基础语法快速入门笔记
- Java学习笔记(一) Java基础以及数据类型介绍
- wpf快速学习笔记一 xaml基础知识