Java查找之线性查找和二分查找的比较与代码实现
程序员文章站
2022-03-14 20:33:32
...
Java查找之线性查找和二分查找的比较与实现
1. 线性查找与二分查找的比较
2. 线性查找与二分查找的代码实现
线性查找与二分查找的比较:
1. 线性查找相比于二分查找简单,且适用范围更大;
2. 二分查找速度快,但是要求查找对象是有序排列的。
线性查找与二分查找的代码实现:
线性查找:import java.util.Scanner;
public class Test {
public static void main(String[] args) {
// 创建数组并赋值
System.out.println("输入数组长度");
Scanner scan = new Scanner(System.in);
int len = scan.nextInt();
int[] arr = new int[len];
for(int i = 0;i < arr.length;i++){
arr[i] = (int) (Math.random()*99+1);
}
// 线性查找
int n = scan.nextInt(); //要找的值n
boolean isflag = true;
for(int j = 0;j < arr.length;j++) {
if (n == arr[j]) {
isflag = false;
System.out.println(j);
break;
}
}
if (isflag) {
System.out.println("没有找到");
}
}
}
二分查找:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
// 创建数组并赋值
System.out.println("输入数组长度");
Scanner scan = new Scanner(System.in);
int len = scan.nextInt();
int[] arr = new int[len];
for(int i = 0;i < arr.length;i++){
arr[i] = (int) (Math.random()*99+1);
}
// 二分查找
int n = scan.nextInt(); //要找的值n
int head = 0;
int end = arr.length-1;
int mid;
boolean isflag = true;
while(head<end) {
mid = (head + end)/2;
if (arr[mid]==n) {
isflag = false;
System.out.println(mid);
break;
}else if (arr[mid] > n) {
end = mid-1;
}else {
head = mid+1;
}
}
if (isflag) {
System.out.println("没有找到");
}
}
}
上一篇: php和xml的动态载入与分页
下一篇: php扩展AMQP,安装报错解决