赞
踩
public class BinarySearch { public static int binarySearch(int[] arr, int target) { int left = 0; int right = arr.length - 1; while (left <= right) { int mid = left + (right - left) / 2; if (arr[mid] == target) { return mid; // 找到目标值,返回索引 } else if (arr[mid] < target) { left = mid + 1; // 目标值在右半部分,更新左边界 } else { right = mid - 1; // 目标值在左半部分,更新右边界 } } return -1; // 目标值不存在,返回-1 } public static void main(String[] args) { int[] arr = {11, 22, 34, 50, 64, 90}; int target = 34; int result = binarySearch(arr, target); if (result == -1) { System.out.println("目标值 " + target + " 不存在数组中"); } else { System.out.println("目标值 " + target + " 的索引为 " + result); } } }
在上述代码中,binarySearch方法实现了二分查找算法。它使用两个指针left和right来表示查找范围的左右边界,然后在每次迭代中计算中间元素的索引mid。通过将目标值与中间元素进行比较,将查找范围逐渐缩小一半。如果找到目标值,返回其索引;如果查找范围缩小到左边界大于右边界,表示目标值不存在,返回-1。main方法中的示例展示了如何使用该算法在一个已排序的数组中查找目标值。
运行代码,你将看到查找结果的输出。二分查找算法的时间复杂度为O(logn),其中n是数组的大小。二分查找适用于已排序的数据集,可以快速定位目标值的位置。然而,要使用二分查找算法,必须确保数组已经按升序或降序排序。
public class LinearSearch { public static int linearSearch(int[] arr, int target) { for (int i = 0; i < arr.length; i++) { if (arr[i] == target) { return i; // 找到目标值,返回索引 } } return -1; // 目标值不存在,返回-1 } public static void main(String[] args) { int[] arr = {11, 22, 34, 50, 64, 90}; int target = 34; int result = linearSearch(arr, target); if (result == -1) { System.out.println("目标值 " + target + " 不存在数组中"); } else { System.out.println("目标值 " + target + " 的索引为 " + result); } } }
在上述代码中,linearSearch方法实现了线性查找算法。它使用循环遍历数组中的每个元素,并将其与目标值进行比较。如果找到目标值,返回其索引;如果遍历完整个数组都没有找到目标值,返回-1。main方法中的示例展示了如何使用该算法在一个数组中查找目标值。
运行代码,你将看到查找结果的输出。线性查找算法的时间复杂度为O(n),其中n是数组的大小。线性查找适用于小型数据集或未排序的数据集,因为它需要逐个比较元素,其性能不如二分查找等更高级的查找算法。然而,线性查找是一种简单直观的查找方法,并且适用于各种情况下的查找需求。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。