java查找

9 篇文章 0 订阅
1 篇文章 0 订阅

1、直接查找

    /*
	 * 直接查找,数组可以无序
	 */
	private static int dirSeach(int[] arr, int index) {
		//r记录找到的索引,-1索引表示没找到,找到返回对应索引
		int r = -1;
		//遍历整个数据
		for (int i = 0; i < arr.length; i++) {
			//如果找到,把索引赋给r,退出遍历
			if (arr[i] == index) {
				r = i;
				break;
			}
		}
		//把对应索引返回
		return r;
	}

2、折半查找

/*
	 * 折半查找非递归,必须是有序数组
	 */
	private static int banarySearch(int[] a, int index) {
		int low = 0;
		int high = a.length-1;
		int mid;
		while (low <= high) {
			mid = (high + low) / 2;
			if (a[mid] == index) {
				//找到返回mid索引
				return mid;
			}
			// index比a[mid]小,说明在左部
			else if (index < a[mid]) {
				high = mid - 1;
			}
			// index比a[mid]大,说明在右边
			else {
				low = mid + 1;

			}
		}
		//没找到返回-1
		return -1;
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值