查找算法 C#
来源:互联网 发布:windows安装苹方字体 编辑:程序博客网 时间:2024/05/20 19:12
顺序查找:哈哈哈
static int[] Arr = new int[11] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99 };for(int i=0;i<Arr.lenght;i++){if(Arr[i]==Key){return i;}}
折半查找法:又称二分查找,前提是线性表中记录的关键码必须是连续的。中心思想不断取中间数做比较,时间复杂度是0(logN)。优于顺序查找(0(n))
static int[] Arr = new int[11] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 99 }; static int binarySearch(int[] arr, int key, ref int index) { int low = 0, high = arr.Length - 1, mid = 0; while (low <= high) { index += 1;//记录经过几次查找到结果 mid = (low + high) / 2; if (key < arr[mid]) { high = mid; } else if (key > arr[mid]) { low = mid; } else { return mid; } } return 0; }差值查找:改良折半查找中的mid公式, 好处是在关键码均匀的情况下,时间复杂度要优于折半查找,缺点就是关键码非常不均匀的话时间复杂度和顺序查找是一样的,哈哈哈哈
static int binarySearch2(int[] arr, int key, ref int index) { int low = 0, high = arr.Length - 1, mid = 0; while (low <= high) { //mid = (low + high) / 2; int fenzi = (key - arr[low]); int fenmu = (arr[high] - arr[low]); mid = low + (int)Math.Ceiling((fenzi * 1.0f / fenmu) * (high - low)); index += 1; if (key < arr[mid]) { high = mid; } else if (key > arr[mid]) { low = mid; } else { return mid; } } return 0; } }
阅读全文
1 0
- C#实现查找算法
- 查找算法 C#
- C#实现二分法查找算法
- C#查找8邻域连通域算法
- C#数据结构和算法学习系列五----基础查找算法
- C#编程之经典算法——查找(一)
- C#编程之经典算法——查找(二)
- C#编程之经典算法——查找(三)
- C#编程之经典算法——查找(四)
- C#编程之经典算法——查找(五)
- 查找算法(静态查找)
- 查找算法 二分查找
- 查找算法:二分查找
- 查找算法 - 二分法查找
- 算法--查找--二分查找
- 算法--查找--差值查找
- 查找算法:二分法查找
- 查找算法---二分查找
- 1078. Hashing (25)
- PLSQL左侧目录关闭问题
- 什么叫做原子操作?
- 论线程和线程池的区别及线程池的介绍
- LitJSON快速入门
- 查找算法 C#
- jsp页面的隐藏对象及方法
- a链接下划线相关属性
- Oracle 中count函数用法
- 【备忘】尚学堂白贺翔java互联网架构师视频教程下载
- /bin/bash: java: command not found 问题解决
- PHP获取指定日期是星期几的实现方法
- poj3177—Redundant Paths(缩点+边双联通分量)
- Android中attrs.xml文件的使用详解