标签:class 结果 http ring plain 判断 sea 算法 void
查找效率慢
import java.util.Scanner; /** * @author: TSCCG * @date: 2021/5/10 */ public class Search { /** * 1.线性查找 * 查询速度慢 */ public static void linearSearch(String[] arr, String dest1) { boolean isFlag1 = true; // 处理查询不到时的情况 for(int i = 0;i < arr.length;i++) { if(dest1.equals(arr[i])) { System.out.println("查询成功!该元素在数组中的位置是:" + (i + 1)); isFlag1 = false; // 如果找到目标元素,就将isFlag1赋值为false } } if(isFlag1) { // 如果未找到目标元素,那么isFlag1的值将仍为true,执行下列语句 System.out.println("查询失败!"); } } /** * 程序入口 */ public static void main(String[] args) { // Scanner sc = new Scanner(System.in); // String dest1 = sc.next(); String[] arr1 = {"AA","BB","CC","DD"}; String dest1 = "CC"; linearSearch(arr1,dest1); String dest2 = "WC"; linearSearch(arr1,dest2); } }
结果:
查询成功!该元素在数组中的位置是:3
查询失败!
先找到数组中间的元素,判断与目标元素的关系:
若就是要查找的元素则输出查找成功
若大于要查找的数则继续对左半边的元素执行步骤1
若小于则继续对右半边的元素执行步骤1
重复以上步骤,直到找到目标元素
数组必须要有序且是顺序储存的,一般要用到排序算法(详见:https://www.cnblogs.com/TSCCG/p/14748591.html)
效率快,尤其当数据量大时
/** * @author: TSCCG * @date: 2021/5/10 */ public class Search { /** * 2.二分查找 * 查询速度快 * 数组必须是有序的 */ public static void binarySearch(int[] arr,int dest2) { int head = 0; int end = arr.length - 1; boolean isFlag2 = true; while(head <= end) { int middle = (head + end) / 2; if(dest2 == arr[middle]) { System.out.println("查找成功,该元素在数组中的位置是:" + (middle + 1)); isFlag2 = false; break; } else if(dest2 > arr[middle]) { // 走到这步时说明本次的arr[middle]不是目标元素, // 那么就可以将此元素排除出下次的查询范围,故head = middle + 1 head = middle + 1; } else { //dest2 < arr[middle] end = middle - 1; } } if(isFlag2) { System.out.println("查询失败!"); } } /** * 程序入口 */ public static void main(String[] args) { int[] arr2 = {-3,0,12,34,55,102}; int dest3 = -3; binarySearch(arr2,dest3); int dest4 = 996; binarySearch(arr2,dest4); } }
结果:
查找成功,该元素在数组中的位置是:1
查询失败!
标签:class 结果 http ring plain 判断 sea 算法 void
原文地址:https://www.cnblogs.com/TSCCG/p/14751416.html