文章目录
- 1.二分查找法
- 1.1.基本算法
- 1.2.代码实现
- 2.数组工具类 Arrays
- 2.1.数组工具类使用
1.二分查找法
1.1.基本算法
- 二分查找又称折半查找,它是一种效率较高的查找方法。
- 二分查找要求(前提):
(1)必须采用顺序存储结构
(2)必须提前按大小有序排列
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。
- 原理:将数组分为三部分,依次是中值(所谓的中值就是数组中间位置的那个值)前,中值,中值后;将要查找的值和数组的中值进行比较,若小于中值则在中值前面找,若大于中值则在中值后面找,等于中值时直接返回。然后依次是一个递归过程,将前半部分或者后半部分继续分解为三部分。
1.2.代码实现
public static void main(String[] args) {
int[] array = { 1, 4, 7, 9, 10, 44, 78, 101, 203, 500 };
int index = binarySearch(array,78);
System.out.println(index);
}
/*
* 循环实现二分查找算法arr 已排好序的数组x 需要查找的数-1 无法查到数据
*/
public static int binarySearch(int[] arr, int x) {
int low = 0;
int high = arr.length - 1;
while (low <= high) {
int middle = (low + high) / 2;
if (x == arr[middle]) {
return middle;
} else if (x < arr[middle]) {
high = middle - 1;
} else {
low = middle + 1;
}
}
return -1;
}
2.数组工具类 Arrays
- 在Java中JDK开发库提供了一个专门进行数组操作的工具类Arrays类,方便开发人员对数组进行一些常见操作。
- 在Java中一个类如果有s结尾,那么这个类一般都是工具类。
- Arrays类位于 java.util包提供的工具类
java.util.Arrays类包含了用来操作数组(比如排序和搜索)的各种方法。
2.1.数组工具类使用
boolean equals(array1,array2)
:比较两个数组中的内容是否相同sort(array)
: 将数组进行升序排列
public static void main(String[] args) {
int[] a = {2, 3, 4, 1, 0, 6, 5};
Arrays.sort(a);
for (int j = 0; j < a.length; j++) {
System.out.print(a[j] + " ");
}
}
-
String toString(array)
:将数组中的元素拼接成一个字符串
void fill(array,val)
:把数组中的所有元素替换成一个新的元素copyOf(array,length)
复制一个原数组,得到一个新的数组int binarySearch(array, val)
二分查找法 查询一个元素在数组中所在的下标