跳至主要內容

二分查找算法

文奚2019年4月9日Java算法约 767 字大约 3 分钟

简介

二分查找是一种高效的搜索算法,特别适用于有序数组或列表。它通过将待查找区域一分为二,并缩小搜索范围,迭代地进行查找,直到找到目标元素或确定目标元素不存在为止。这种算法的时间复杂度是O(log n),相比线性搜索等算法更加高效。

算法步骤

Java示例

public class BinarySearch {
    
    /**
     * 二分查找算法
     *
     * @param array   有序数组
     * @param target  要查找的目标元素
     * @return        目标元素的索引,如果不存在则返回-1
     */
    public static int binarySearch(int[] array, int target) {
        int low = 0;
        int high = array.length - 1;

        while (low <= high) {
            int mid = low + (high - low) / 2;

            if (array[mid] == target) {
                return mid; // 目标元素找到
            } else if (array[mid] > target) {
                high = mid - 1; // 缩小搜索范围为左半部分
            } else {
                low = mid + 1; // 缩小搜索范围为右半部分
            }
        }

        return -1; // 目标元素不存在
    }

    public static void main(String[] args) {
        int[] sortedArray = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int target = 5;

        int result = binarySearch(sortedArray, target);

        if (result != -1) {
            System.out.println("目标元素 " + target + " 的索引是 " + result);
        } else {
            System.out.println("目标元素 " + target + " 不存在");
        }
    }
}

性能分析

总结

二分查找是一种高效的搜索算法,特别适用于有序数组或列表。通过将搜索范围一分为二,算法能够迅速定位目标元素,具有较低的时间复杂度。在实际应用中,二分查找常用于搜索、排序等场景,是编程中的常见算法之一。

你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.3.0