zoukankan      html  css  js  c++  java
  • 二分法查找算法

    package SuanFa;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class Demo1 {
        public static void main(String []args){
    
             int []arr={1,3,5,7,9,11,12,13,15,16,18,19,20};
             int a=rank(100,arr);
             System.out.println(a);
    
             System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));
        }
    
        static int  rank(int key,int []arr){
        int start=0;
        int end=arr.length-1;
    
        while (start<=end){
            int mid=start+((end-start)/2);
            if(key<arr[mid])end=mid-1;
            else  if(key>arr[mid])start=mid+1;
            else  return  mid;
        }
            return -1;
        }
    }
    

    试用与有序集合

    优化版,支持括号内多个运算符

    package SuanFa;
    
    import java.util.Stack;
    
    public class StackCalculateExpression {
        public static void calculate(char[] cArr){
            //定义一个运算符栈
            Stack<String> ops =new Stack<String>();
            //定义一个操作数栈
            Stack<Integer> vals=new Stack<Integer>();
            //遍历出所有的操作数和运算符
            for(char c:cArr){
                String str=String.valueOf(c);
                if(str.equals("(")) ops.push("(");
                else if(str.equals("+")) ops.push(str);
                else if(str.equals("-")) ops.push(str);
                else if(str.equals("*")) ops.push(str);
                else if(str.equals("/")) ops.push(str);
                else if(str.equals(")")){
    
                    String op="";
                    while ((op=ops.pop())!="(") {
                        Integer v = vals.pop();
                        if (op.equals("+")) v = vals.pop() + v;
                        else if (op.equals("-")) v = vals.pop() - v;
                        else if (op.equals("*")) v = vals.pop() * v;
                        else if (op.equals("/")) v = vals.pop() / v;
                        vals.push(v);
                    }
                }else vals.push(Integer.parseInt(str));
            }
    System.out.println(vals.pop());
    
        }
        public static void main(String[] args) {
            String str="(1+((1+3+1+3+2)*(2*3)))";
            calculate(str.toCharArray());
        }
    }
    View Code
  • 相关阅读:
    手机适配与viewport
    Vue组件之间的传值
    作用域链、闭包以及this的使用
    浏览器兼容性
    闭包
    BFC自适应布局
    Mybatis 事务管理
    Mybatis数据源
    Mybatis 缓存分析
    设计模式之禅(2)-设计模式
  • 原文地址:https://www.cnblogs.com/tiancai/p/9012924.html
Copyright © 2011-2022 走看看