欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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("没有找到");
		}		
}
}