A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 大牛1 中级黑马   /  2016-6-1 20:30  /  547 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

基本查找、二分查找
  1. package cn.itcast_04;

  2. /*
  3. * 查找:
  4. *                 基本查找:数组元素无序(从头找到尾)
  5. *                 二分查找(折半查找):数组元素有序
  6. *
  7. * 分析:
  8. *                 A:定义最大索引,最小索引
  9. *                 B:计算出中间索引
  10. *                 C:拿中间索引的值和要查找的值进行比较
  11. *                         相等:就返回当前的中间索引
  12. *                         不相等:
  13. *                                 大        左边找
  14. *                                 小        右边找
  15. *                 D:重新计算出中间索引
  16. *                         大        左边找
  17. *                                 max = mid - 1;
  18. *                         小        右边找
  19. *                                 min = mid + 1;
  20. *                 E:回到B
  21. */
  22. public class ArrayDemo {
  23.         public static void main(String[] args) {
  24.                 //定义一个数组
  25.                 int[] arr = {11,22,33,44,55,66,77};
  26.                
  27.                 //写功能实现
  28.                 int index = getIndex(arr, 33);
  29.                 System.out.println("index:"+index);
  30.                
  31.                 //假如这个元素不存在后有什么现象呢?
  32.                 index = getIndex(arr, 333);
  33.                 System.out.println("index:"+index);
  34.         }
  35.        
  36.         /*
  37.          * 两个明确:
  38.          * 返回值类型:int
  39.          * 参数列表:int[] arr,int value
  40.          */
  41.         public static int getIndex(int[] arr,int value){
  42.                 //定义最大索引,最小索引
  43.                 int max = arr.length -1;
  44.                 int min = 0;
  45.                
  46.                 //计算出中间索引
  47.                 int mid = (max +min)/2;
  48.                
  49.                 //拿中间索引的值和要查找的值进行比较
  50.                 while(arr[mid] != value){
  51.                         if(arr[mid]>value){
  52.                                 max = mid - 1;
  53.                         }else if(arr[mid]<value){
  54.                                 min = mid + 1;
  55.                         }
  56.                        
  57.                         //加入判断
  58.                         if(min > max){
  59.                                 return -1;
  60.                         }
  61.                        
  62.                         mid = (max +min)/2;
  63.                 }
  64.                
  65.                 return mid;
  66.         }
  67. }
复制代码



4 个回复

倒序浏览
顶一个!
回复 使用道具 举报

共同进步
回复 使用道具 举报
很好!!!!!!
回复 使用道具 举报
共同学习共同进步   {:2_31:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马