zoukankan      html  css  js  c++  java
  • Java 作业题3

    二分查找 主要是其中的细节 这些位置的判断 不去自己调试真的不知道。。。到了考场上如果要手写,连bug也不知道

    我也不知道程序设计要笔试是什么意思

    本身就是很傻的行为

    考作业题 考背诵么?

    package Test;
    
    
    public class Main {
        public static void main(String[] args) {
            int[] a={1, 3, 3, 3, 3, 6, 6, 8, 8, 8, 10};
            System.out.println(binarySearch(a, 3, 1));
        }
        
        /**
         * @param a 待查数组
         * @param key 待查关键字
         * @param flag    如果flag等于0,表示查找关键字出现的第一个位置;如果flag等于1,返回关键字出现的最后一个位置
         * @return 关键字的位置
         */
        private static int binarySearch(int[] a, int key, int flag)
        {
            int len = a.length;
            if(key < a[0] || key > a[len - 1])
                return -1;
            
            int i = 0, j = len - 1;
            while(i <= j) 
            {
                int mid = (i + j) / 2;
                if(key == a[mid]) 
                {
                    //接下来的三行代码是为了查找关键字出现的最早的位置
                    int tmp = mid;
                    while(--tmp >= 0 && a[tmp] == key);//防止越界
                        i = tmp + 1;    //应该新定义一个变量表示,用i存储也行。
                    
                    //接下来的两行代码是为了查找关键字出现的最后的位置
                    while(++mid < len && a[mid] == key);
                        j = mid - 1;
                    
                    //返回找到的关键字
                    if(flag == 0) 
                        return i;
                    else 
                        return j;
                }
                else if(key > a[mid])
                {
                    i = mid + 1;
                }
                else 
                {
                    j = mid - 1;
                }
            }
            return -1;
        }
        
    }
  • 相关阅读:
    洛谷P2158 [SDOI2008]仪仗队 欧拉函数的应用
    leetcode 130. 被围绕的区域 DFS
    TediousLee CodeForces
    AccurateLee双指针+贪心+字符串
    leetcode80. 删除排序数组中的重复项 II
    CHFDORA:哆啦 A 梦
    cdq分治浅谈
    leetcode面试题64. 求1+2+…+n
    leetcode84. 柱状图中最大的矩形
    leetcode874. 模拟行走机器人
  • 原文地址:https://www.cnblogs.com/ranzhong/p/14142876.html
Copyright © 2011-2022 走看看