java 二分查找 简书_9.1JAVA-复习-26(二分查找三种方法 常用APIString )

1.二分查找

代码:

import java.util.Arrays;

//请使用二分查找代码,对以下数据进行排序[5,8,1,9,7,6,3],然后查找值为7的元素索引值并输出索引 值

public class BinarySearch {

public static void main(String[] args) {

int[] arr = {5, 8, 1, 9, 7,7,7,9,8,8};

//二分查找必须排序

Arrays.sort(arr);

System.out.println(Arrays.toString(arr));

int binary = binary(arr, 7);

int binary1 = binary1(7, 0, arr.length - 1, arr);

int binary2 = binary2(7, 0, arr.length - 1, arr);

System.out.println(binary);//10

System.out.println(binary1);//10

System.out.println(binary2);//9

//这三种方法结果可能不同

}

private static int binary1(int key, int low, int hight,int[] arr ) {

if (hight < low){return low;};

int mid = low +(hight-low)/2;

if (key < arr[mid] ){return binary1(key,low,mid-1,arr);}

else if (key > arr[mid]){return binary1(key,mid+1,hight,arr);}

else {return mid;}

}

private static int binary2(int key, int low, int hight,int[] arr ) {

if (hight < low){return low;};

int mid = low +(hight-low)/2;

if (key < arr[mid] ){return binary1(key,low,mid,arr);}

else if (key > arr[mid]){return binary1(key,mid,hight,arr);}

else {return mid;}

}

private static int binary(int[] arr,int a) {

int low = 0;

int hight =arr.length;

int median = (low + hight)/2;

while (low<=hight){

if (arr[median] < a && low <=hight){

int temp = median;

low = temp;

median = (low + hight)/2;

}

if (arr[median] > a && low <= hight){

int temp = median;

hight =temp;

median = (low + hight)/2;

}

else {

return median;

}

}

return -1;

}

}

API:

4996b269da24

概述

4996b269da24

概述

4996b269da24

概述

4996b269da24

面试题

防止两个对象指向同一个地址值,如果一个改变,另一个也会改变.....

4996b269da24

image.png

4996b269da24

image.png

补充:

4996b269da24

一道面试题 值传递和引用传递

4996b269da24

image.png

4996b269da24

image.png

4996b269da24

char和string的转换

4996b269da24

byte 和 string

4996b269da24

常量在常量池

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值