数据结构与算法(28)——查找
来源:互联网 发布:算法导论epub 编辑:程序博客网 时间:2024/06/06 21:39
无序线性查找(UnSorted Linear Search)
假设给定的一个数组,其元素的排列顺序是未知的,即数组中的元素是无序的。如果查找某个元素,必须扫描整个数组才能判断该元素是否在给定的数组中。
/** * 无序线性查找(UnSorted Linear Search) * @param array 给定的无序数组 * @param data 需要查找的元素 * @return 该元素在数组中的下标 */public static int unSortedLinearSearch(int[] array, int data) { for (int i = 0; i < array.length; i++) { if (array[i] == data) { return i; } } return -1;}
无序线性查找(Sorted Linear Search)
假设给定的一个数组,其元素的排列顺序是已知的,即数组中的元素是有序的。如果A[i]的值大于要查找的值,直接返回-1,而不用扫描整个数组。
/** * 无序线性查找(Sorted Linear Search) * @param array 给定的有序数组 * @param data 需要查找的元素 * @return 该元素在数组中的下标 */public static int sortedLinearSearch(int[] array, int data) { for (int i = 0; i < array.length; i++) { if (array[i] == data) { return i; } else if(array[i] > data) { return -1; } } return -1;}
二分查找是一个基础的算法,也是面试中常考的一个知识点。二分查找就是将查找的键和子数组的中间键作比较,如果被查找的键小于中间键,就在左子数组继续查找;如果大于中间键,就在右子数组中查找,否则中间键就是要找的元素。
参考:http://www.cnblogs.com/luoxn28/p/5767571.html
/** * 非递归二分查找算法 * @param array 给定的有序数组 * @param data 需要查找的元素 * @return 该元素在数组中的下标 */public static int binarySearchIterative(int[] array, int data) { int mid = 0; int low = 0; int high = array.length - 1; while (low < high) { // 避免溢出 mid = low + (high - low) / 2; if (array[mid] == data) { return mid; } else if (array[mid] > data) { high = mid - 1; } else { low = mid + 1; } } return -1;}/** * 二分查找算法(递归) * @param array 给定的有序数组 * @param low 数组的起始位置 * @param high 数组的结束位置 * @param data 需要查找的元素 * @return 该元素在数组中的下标 */public static int binarySearchRecursive(int[] array, int low, int high, int data) { // 避免溢出 int mid = low + (high - low) / 2; if (array[mid] == data) { return mid; } else if (array[mid] > data) { binarySearchRecursive(array, low, mid - 1, data); } else { binarySearchRecursive(array, mid + 1, high, data); } return -1;}
测试代码,敬请参考数据结构与算法(JAVA版)
阅读全文
0 0
- 数据结构与算法(28)——查找
- 数据结构与算法——二分查找(C语言)
- 数据结构与算法专题之查找与排序——静态查找(顺序、二分、哈希)
- 数据结构与算法——二分查找算法
- 数据结构与算法(二分查找算法)
- python学习笔记(十一)——算法与数据结构基础(算法概述+查找算法)
- 数据结构与算法:查找
- 数据结构——查找算法
- 【算法】数据结构——查找
- python数据结构与算法28 二分查找
- 数据结构与算法分析——二分查找
- 数据结构与算法 —— 二分查找的递归方式
- 数据结构与算法—斐波那契查找
- 数据结构与算法—斐波那契查找2
- 数据结构与算法(查找)1
- 数据结构与算法(9)顺序查找
- 数据结构与算法(10)二分查找
- 数据结构与算法(12)Fibonacci查找
- 程序小白----AndroidStudio之飞机大战
- 重装系统后无法使用(win+linux)双系统
- visual studio 2013 控制台输出中文乱码%100帮你解决
- 笔记:App内存优化
- react native常用插件地址
- 数据结构与算法(28)——查找
- 新闻客户端案例——(AsycHttpClient,SmartImageView,JSON)
- 如何实现继承?继承的规则?
- NETCTOSS项目(一)
- git使用方法
- 视频学习Vue-仿APP学习笔记
- LigerUI
- Backtrader量化平台教程(八) TimeFrame
- 科学网博客——力荐,不看会后悔的!