在这里概念性的东西讲也是没有意义的,直接上代码:
- 面向对象的数组(一些常见的方法)
1 | import java.util.Arrays; |
数组的查找
线性查找(过于简单)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class testSearch {
public static void main(String[] args) {
//目标数组
int []arr=new int[]{1,2,3,4,5,6,7,8,9};
//目标元素
int a=6;
int index=-1;
for(int i=0;i<arr.length;i++){
if(arr[i]==a){
index=i;
break;
}
}
//打印目标元素的下标
System.out.println(index);
}
}
二分查找
假如中间位置与目标元素大小相同那么直接跳出循环,不同则判断中间位置与目标元素的大小,改变首位位置,如果大于目标元素,end=mid-1,小于则begin=mid+1。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36public class testBinarySearch {
public static void main(String[] args) {
// 目标数组
int[] arr = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
// 目标元素
int a = 9;
//记录开始和结束位置
int begin=0;
int end=arr.length-1;
int mid=(begin+end)/2;
//记录位置
int index=-1;
while(true){
if(arr[mid]==a){
index=a;
break;
//中间元素不是要查找的元素
}else{
//比目标元素大
if(arr[mid]>a){
//
end=mid-1;
}else{
begin=mid+1;
}
mid=(begin+end)/2;
}
}
System.out.println(index);
}
}