1. 이분법 설명
이분법의 핵심 아이디어는 인덱스의 이동으로 검색 속도가 기하학적으로 증가합니다.
이진 검색 방법은 발견된 배열 요소의 인덱스를 반환하고, 찾을 수 없으면 -1
2를 반환합니다. 예
이진 검색 방법은 배열에서 매개변수 값의 위치를 찾습니다.
시나리오 설명:
매개변수에 따라 값은 배열에서 아래 첨자 범위를 찾습니다. 예: 배열 {0, 1, 3, 5}에서 2의 범위는 {1, 2}
package com.study.collection; import java.util.Arrays; /** * @auth zhangmj * @date 2019/2/12 9:14 */ public class ExampleList<T> { public static void main(String[] args) { int[] intArray = {0,1,2,10,15,20,25,29,31,36,39,40,42,43,46,50,55,60,63,66,70}; int num =2; int[] resultArray = getPostionByTwoPoint(intArray, num); System.out.println(Arrays.toString(resultArray)); } private static int[] getPostionByTwoPoint(int[] intArray, int num) { // 判断 if(intArray == null || intArray.length == 0){ throw new RuntimeException("数组不能为空"); } // 定义最小和区间 if(intArray[0] > num || intArray[intArray.length - 1] < num){ throw new RuntimeException("不在数组范围之内"); } int middle = 0; int low = 0; int high = intArray.length - 1; // 定义首尾特殊的情况 if(intArray[low] == num){ int[] resultArray = {low, low}; return resultArray; }else if(intArray[high] == num){ int[] resultArray = {high, high}; return resultArray; } int i = 1; // 数在中间的情况 while(low < high){ System.out.println("查找第 " + i + " 次"); middle = (low + high + 1)/2; if(intArray[middle] == num){ int[] resultArray = {middle, middle}; return resultArray; }else if(intArray[middle] > num){ // num 在 low 和 middle 之间 int previous = middle - 1; if(previous > low && intArray[previous] < num){ int[] resultArray = {previous, middle}; return resultArray; } high = middle; }else if(intArray[middle] < num){ int latter = middle + 1; if(latter < high && intArray[latter] > num){ int[] resultArray = {middle, latter}; return resultArray; } low = middle; } i++; } throw new RuntimeException("定位异常"); } }입니다.
위 내용은 바이너리 메소드를 사용하여 Java에서 배열 요소의 위치를 찾는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于结构化数据处理开源库SPL的相关问题,下面就一起来看一下java下理想的结构化数据处理类库,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于PriorityQueue优先级队列的相关知识,Java集合框架中提供了PriorityQueue和PriorityBlockingQueue两种类型的优先级队列,PriorityQueue是线程不安全的,PriorityBlockingQueue是线程安全的,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于java锁的相关问题,包括了独占锁、悲观锁、乐观锁、共享锁等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于多线程的相关问题,包括了线程安装、线程加锁与线程不安全的原因、线程安全的标准类等等内容,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于枚举的相关问题,包括了枚举的基本操作、集合类对枚举的支持等等内容,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Java的相关知识,其中主要介绍了关于关键字中this和super的相关问题,以及他们的一些区别,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于平衡二叉树(AVL树)的相关知识,AVL树本质上是带了平衡功能的二叉查找树,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于Java的相关知识,其中主要整理了Stream流的概念和使用的相关问题,包括了Stream流的概念、Stream流的获取、Stream流的常用方法等等内容,下面一起来看一下,希望对大家有帮助。


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

WebStorm Mac 버전
유용한 JavaScript 개발 도구

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.
