二分法查找(结合排序)

排序算法详见?冒泡&&选择排序

二分法查找

public int binarySearch(int[] a, Integer num) {
		int low = 0;
		int high = a.length - 1;
		int mid = 0;
		int result = 0;
		while (low <= high) {
			mid = (high + low) / 2;
			if (num.compareTo(a[mid]) == -1) {
				high = mid - 1;
			} else if (num.compareTo(a[mid]) == 1) {
				low = mid + 1;
			} else {
				result = mid+1;//直接返回所查元素的位置,避免了因为要找的元素的索引为0,而在主函数中出错
				break;
			}
		}
		return result;
	}

数组初始化函数

public int[] initArray(int n) {
		Random random = new Random();
		int[] a = new int[n];
		for (int i = 0; i < a.length; i++) {
			a[i] = random.nextInt(n * 10) + 1;
		}
		return a;
	}

主函数

主函数中涉及的排序算法在文章开头有说明!

public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		ProgramList2 pl2 = new ProgramList2();
		System.out.print("请输入数组长度:");
		int n = input.nextInt();
		int[] beforeSort = pl2.initArray(n);
		int[] afterSort = pl2.sortFunc2(beforeSort);
		for(int i = 0;i<afterSort.length;i++){
			if(i%10==0&&i!=0){
				System.out.println();
			}
			System.out.print(afterSort[i]+"	");
		}
		System.out.println();
		System.out.print("请输入要查找的数:");
		int num = input.nextInt();
		int result = pl2.binarySearch(afterSort, num);
		if(result==0){
			System.out.println("没有");
		}else{
			System.out.println("在第"+result+"个位置");
		}
		
	}

写在最后:Arrays.binarySearch(int [] a, key);通过静态方法binarySearch(),可以实现二分查找.如果key在数组中,则返回搜索值的索引;否则返回第一个大于该键的元素的索引。
本文主要是作为本人学习的一个笔记,欢迎各位大佬打扰指点!!!?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值