开发者学堂课程【【名师课堂】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>
输入(更改)数字查找
以上主要是属于数据结构,考验逻辑思维。