三种Java查找算法
来源:互联网 发布:最优化书籍推荐 编辑:程序博客网 时间:2024/05/17 01:34
三种Java数据查找算法:顺序查找,二分查找(递归方式)和二分查找(非递归方式)。内容来源网络资料整理,记录一下。
1、顺序查找
/** * 说明:顺序查找,查询数组或集合不需要有序 * 顺序查找适合于存储结构为顺序存储或链接存储的线性表。 * 在s[0] - s[n-1]中顺序查找关键字为key的记录 * 查找成功时返回该记录的下标序号; * 失败时返回-1 * * @param s 需要查询的数组 * @param key 查询的字段值 * @return 返回值 */ int SequentialSearch(int s[], int key) { int i; i = 0; int length = s.length; while (i < length && s[i] != key) i++; if (s[i] == key) return i; else return -1; }
2、 二分查找,递归方式实现
/** * 说明:二分查找,递归方式实现,建立在有序数组基础上的 * 在arr[]中顺序查找关键字为key的记录 * 查找成功时返回该记录的下标序号; * 失败时返回-1 * * @param arr 需要查询的数组 * @param low 查询下标 * @param high 查询上标 * @param key 查询字段 * @return 返回值 */ int BinarySearchRecursion(int arr[], int low, int high, int key) { if (low <= high) { int mid = (low + high) / 2; if (key == arr[mid]) return mid; else if (key < arr[mid]) //移动low和high return BinarySearchRecursion(arr, low, mid - 1, key); else if (key > arr[mid]) return BinarySearchRecursion(arr, mid + 1, high, key); } return -1; }3、二分查找,非递归方式显示
/** * 说明:二分查找,非递归实现,建立在有序数组基础上的 * 在arr[]中顺序查找关键字为key的记录 * 查找成功时返回该记录的下标序号; * 失败时返回-1 * * @param arr 需要查询的数组 * @param key 查询字段 * @return 返回值 */ int binarySearch(int[] arr, int key) { int low = 0; int high = arr.length - 1; while (low <= high) { //中间位置计算,low+ 最高位置减去最低位置,右移一位,相当于除2.也可以用(high+low)/2 int middle = low + ((high - low) >> 1); //与最中间的数字进行判断,是否相等,相等的话就返回对应的数组下标. if (key == arr[middle]) { return middle; //如果小于的话则移动最高层的"指针" } else if (key < arr[middle]) { high = middle - 1; //移动最低的"指针" } else { low = middle + 1; } } return -1; }
0 0
- 三种Java查找算法
- 算法Java实现 --- 三种静态查找方法
- 三种查找算法简介
- Java查找算法(三): 倒排索引
- java查找算法(三)--二分非递归查找
- 909422229__三种查找算法:顺序查找,二分法查找(折半查找),分块查找
- 有序查找的三种算法
- 三种不同查找算法实际查找性能的对比
- STL算法---查找算法(三)
- Java查找字符串的三种方法
- Java查找算法--线性查找
- 查找算法系列(三):字典查找
- 查找算法总结(三)
- 查找算法总结(三)
- 查找算法总结(三)
- 查找算法三之二叉排序树
- 查找算法总结(三)
- 查找算法总结之三
- 音频功放的另一个mono接法
- segment如何添加方法
- c# 使用初始化器初始化对象
- Android SDK开发包国内下载地址
- Python时间,日期,时间戳之间转换
- 三种Java查找算法
- 求无向联通图的割点
- ReactiveCocoa,最受欢迎的iOS函数响应式编程库(2.5版),没有之一!
- 为什么微软Edge浏览器得不到用户的喜爱
- 算法题 子数组之和为零
- 工作日志-20151019
- eclipse一些问题点归纳整理
- 黑马程序员--Java学习日记之IO流(字符流和字节流)
- 中文获取全拼功能Java代码