标签:code index pre print sea yar array turn sys
1. 循环遍历查找
2. 二分法查找
前提:已经从小到大排序的数组序列。
原理:每次都以中间元素分割,如果中间的元素小于查找元素,则说明查找元素在后面,再从中间元素后面的元素为开始,接着查找,以此类推;如果中间元素大于要查找的元素,则说明查找元素再中间元素的左边,则从中间元素的前一个元素查找;
数组序列:12, 23, 45, 67, 122, 567, 890, 900;需要查找的元素是890
第一次查找:
begin = 0
end = 7
mid = (0+7)/2
67 < 890
第二次查找:
begin = 4
end = 7
mid = 5
567<890
第三次查找:
begin = 6
end = 7
mid = 6
890 = 890
程序实现:
public class SearchArray { public static void main(String[] args) { int[] arr = {44,2,11,98,55,34}; int index = ArraySearch(arr,100); System.out.println("遍历查找结果:"); System.out.println(index == -1? "该元素没有找到":"该元素的下标:"+index); int[] arr1 = {12, 23, 45, 67, 122, 567, 890, 900}; int index1 = BinaryArray(arr1,45); System.out.println("二分法查找结果:"); System.out.println(index1 == -1? "该元素没有找到":"该元素的下标:"+index1); } /** * 二分法查找 * @param arr1 * @param i * @return */ public static int BinaryArray(int[] arr1, int i) { int begin = 0; int end = arr1.length - 1; while (begin <= end){ int mid = (begin + end)/2; if(arr1[mid] == i){ return mid; }else if(arr1[mid] < i){ begin = mid + 1; }else { end = mid - 1; } } return -1; } /** * 遍历查找 * @param arr 需要查找的数组 * @param i 需要查找的元素 * @return 返回值 */ public static int ArraySearch(int[] arr, int i) { for (int j = 0; j < arr.length; j++) { if (arr[j] == i){ return j; } } return -1; } }
标签:code index pre print sea yar array turn sys
原文地址:https://www.cnblogs.com/homle/p/14400073.html