数组的定义与使用(数组案例:二分查找法)|学习笔记

开发者学堂课程【【名师课堂】Java面向对象开发:数组的定义与使用(数组案例:二分查找法)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/371/detail/4440


数组的定义与使用(数组案例:二分查找法)


目录:

一、定义

二、使用

 

一、定义

要求在一个指定的数组中查询一个数据的位置。最简化的实现,整体数组遍历。

public class ArrayDemo{

public static void main(String args[]){

lnt data[] = new int [] {1,2,3,4,5,6,7,8} ;

lnt search = 7(输入需要查找的数值) ;

System.out.println(index(data,search));}编译执行

}

public static int index(int arr[],int key){

for(int x=0 ; x< arr.length ; x ++){

if(arr[x]== key){

return x ;

}

}

Return -1;

}

}

这个时间复杂度是 n,意思是所以的数组中的数据都需要进行一次遍历,遍历=循环,才能够确认所需要查找的数据是否存在。如需进行更快速的查找方法,最好的做法是进行二分查找(折半查找)。

 

二、使用

二分查找(前提:数组排序)数组的定义与使用(数组案例:二分查找法)|学习笔记

范例:实现二分查找(采用方法递归操作完成)

Public class ArrayDemo{

public static void main(String args[]){

int data[] = new int [] {1,2,3,4,5,6,7,8} ;

int search =7 ;

System.out.println(binarySearch(date,0,data.length,-1,search));}

public static int binnarySearch(int arr[],int from,int to,int key){

If (from<to){

int mid = (from / 2)+(to / 2); //确定中间点

if(arr[mid]==key) { //数据找到了

return mid; //取得当前索引

} else if(key<arr[mid]){

return binarySarch(arr,from,mid-1,key);

} else if (key>arr[mid]) {

return binarySarch(arr,from,mid+1,key);}

}

}

return-1 ;

}

编译执行输入:

D:\mydeo>javac ArrayDemo.java

D:\mydeo>javac ArrayDemo

-1

D:\mydeo>

输入(更改)数字查找

以上主要是属于数据结构,考验逻辑思维。

上一篇:JavaScript学习(九)


下一篇:JS避坑-如何优雅地遍历对象