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
  • 相关阅读:
    洛谷 P1919 【模板】A*B Problem升级版(FFT快速傅里叶)
    Codeforces Goodbye 2018
    ubuntu 百度云
    【UOJ 351】新年的叶子
    【SDOI2008】仪仗队
    NOI 2002 贪吃的九头龙
    最大获利
    codeforces 814E An unavoidable detour for home
    codeforces 814D An overnight dance in discotheque
    bzoj3191 [JLOI2013]卡牌游戏
  • 原文地址:https://www.cnblogs.com/tiancai/p/9012924.html
Copyright © 2011-2022 走看看