Android_Java--二分法查找
来源:互联网 发布:微信联系人数据库恢复 编辑:程序博客网 时间:2024/06/01 07:39
二分法查找适用的条件是数据量较大,有序且不重复。
基本思路:
1、假如序列是升序的,给定一个查找的值x,找到序列a的中间位置y
2、如果x < a[y],则y - 1;
3、如果x > a[y],则y +1;
4、如果x = a[y],则直接返回相应位置;
package com.location.morgan.dichotomysearch;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.view.menu.ActionMenuItemView;import android.util.Log;import android.view.View;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final int[] dichotomyArray = new int[]{ 1,3,5,7,9,11,13,15,17,19,21 }; final int dichotomyKey = 19; findViewById(R.id.bt).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int index = dichotomySearch(dichotomyArray,dichotomyKey); Log.d("zzc","index is:"+index); } }); } private int dichotomySearch(int[] dichotomyArray, int dichotomyKey) { int start = 0; int end = dichotomyArray.length - 1; while(start <= end){ int middle = (start + end)/2; if(dichotomyKey < dichotomyArray[middle]){ end = middle - 1; }else if(dichotomyKey > dichotomyArray[middle]){ start = middle + 1; }else{ return middle; } } return -1; }}
阅读全文
0 0
- Android_Java--二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 二分法查找
- 解决node-ffi在Windows XP上使用出现“Error: The specified procedure could not be found”的错误
- docker 部分常用命令及其功能笔记汇总
- 在eclipse中怎么执行sql语句
- 原码 反码 补码 及 python的位运算
- python实现验证码
- Android_Java--二分法查找
- unity 《专题系列》资源打包 Asset Bundles 第五节 Asset Bundles 依赖打包和加载
- botan2 编译
- 二叉查找树的
- leetcode题解-58. Length of Last Word
- c:文本文件的读写(simple版)
- Python:读取Word的内容
- matlab fig另存为pdf 图片缺失解决方案
- OpenCV-Mat方式获取图片的像素(二)