标签:数组元素 案例 tla else 查找算法 循环 ast 移动 数组下标
package cn.imooc.java2;
public class Test02 {
     //定义一个静态方法
     static int binarySerach(int[] array, int key) {
          //定义数组下标的最左
         int left = 0;
         //定义数组下标的最右(下标都是从0开始的,因此需要-1)
         int right = array.length - 1;
         while (left <= right) {
             int mid = (left + right) / 2;
             //判断中间值是否为目标值
             if (array[mid] == key) {
                 return mid;
             }
             else if (array[mid] < key) {
                 left = mid + 1;
             }
             else {
                 right = mid - 1;
             }
         }
         return -1;
     }
    //测试,目标值为7
     public static void main(String[] args) {
          Test02 s = new Test02();
          int[] b={1,5,6,7,8,9,10,12};      
          System.out.println(s.binarySerach(b, 7));
     }
}
package cn.imooc.java2;
public class Test02 {
     // 查找第一个相等的元素
     static int findFirstEqual(int[] array, int key) {
         int left = 0;
         int right = array.length - 1;
         while (left <= right) {
             int mid = (left + right) / 2;
             if (array[mid] >= key) {
                 right = mid - 1;
             }
             else {
                 left = mid + 1;
             }
         }
         if (left < array.length && array[left] == key) {
             return left;
         }        
         return -1;
     }
     public static void main(String[] args) {
          Test02 s = new Test02();
          int[] b={1,5,6,7,7,7,7,8,9,10,12};         
          System.out.println(s.findFirstEqual(b, 7));
     }
}
package cn.imooc.java2;
public class Test02 {
     static int findLastEqual(int[] array, int key) {
         int left = 0;
         int right = array.length - 1;
         while (left <= right) {
             int mid = (left + right) / 2;
             if (array[mid] <= key) {
                 left = mid + 1;
             }
             else {
                 right = mid - 1;
             }
         }
         if (right >= 0 && array[right] == key) {
             return right;
         }
         return -1;
     }
     public static void main(String[] args) {
          Test02 s = new Test02();
          int[] b={1,5,6,7,7,7,7,8,9,10,12};         
          System.out.println(s.findLastEqual(b, 7));
     }
}
package cn.imooc.java2; public class Test02 { static int findLastEqualSmaller(int[] array, int key) { int left = 0; int right = array.length - 1; while (left <= right) { int mid = (left + right) / 2; if (array[mid] > key) { right = mid - 1; } else { left = mid + 1; } } return right; } public static void main(String[] args) { Test02 s = new Test02(); int[] b={1,5,6,7,7,7,7,8,9,10,12}; System.out.println(s.findLastEqualSmaller(b, 11)); } }
package cn.imooc.java2;
public class Test02 {
     static int findFirstEqualLarger(int[] array, int key) {
         int left = 0;
         int right = array.length - 1;
         while (left <= right) {
             int mid = (left + right) / 2;
             if (array[mid] >= key) {
                 right = mid - 1;
             }
             else {
                 left = mid + 1;
             }
         }
         return left;
     }
     public static void main(String[] args) {
          Test02 s = new Test02();
          int[] b={1,5,6,7,7,7,7,8,9,10,12};         
          System.out.println(s.findFirstEqualLarger(b, 11));
     }
}
package cn.imooc.java2;
public class Test02 {
     static int findFirstLarger(int[] array, int key) {
         int left = 0;
         int right = array.length - 1;
         while (left <= right) {
             int mid = (left + right) / 2;
             if (array[mid] > key) {
                 right = mid - 1;
             }
             else {
                 left = mid + 1;
             }
         }
         return left;
     }
     public static void main(String[] args) {
          Test02 s = new Test02();
          int[] b={1,5,6,7,7,7,7,8,9,10,12};         
          System.out.println(s.findFirstLarger(b, 11));
     }
}
标签:数组元素 案例 tla else 查找算法 循环 ast 移动 数组下标
原文地址:http://www.cnblogs.com/fengxiongZz/p/7615520.html