• Java冒泡算法及中位数算法


    import java.math.BigDecimal;
    
    public class Test {
        
        public static void main(String[] args) {
            //控制随机数量
            int c = 100;
            Number[] array = new Number[c];
            /*初始化*/
            for(int i=0;i<array.length;i++){
                Number random = round(Math.random()*100,2);
                array[i] = random;
            }
            
            
            Number[] array_A = array;
        
            /* *
             * 乱序
             * 若初始化的数组是循环的有序整形,才有打乱数组构成的必要
             * */
            for (int i = 0; i < array.length;  i++) {
                Number random = Math.round(Math.random()*(c-1));
                Number temp = array[i];
                array[i] = array[random.intValue()] ;
                array[random.intValue()] = temp;
            }
            
            Number[] array_B = array;
            
            System.out.println(out(array_A));
            System.out.println(getMidNum(array_A));
            System.out.println("**");
            System.out.println(out(array_B));
            System.out.println(getMidNum(array_B));
            
        }
        
        
        //冒泡算法
        public static Number[] sort(Number[] array){
            
            for(int i=0;i<array.length-1;i++){
                //起始标和之前的结束标是个小细节
                for(int j=i+1; j<array.length;j++){
                    
                    Number temp;
                    //这里可以控制正序或逆序
                    if(array[i].doubleValue()<array[j].doubleValue()){
                        temp = array[i];
                        array[i] = array[j];
                        array[j] = temp;
                    }
                }
            }
            return array;
        }
        
        
        
        //中位数算法
        public static double getMidNum(Number[] array){
            array = sort(array);
            //java.util.Arrays.sort(array);
            
            int c = array.length;
            
            double ret = c%2==0?(array[(c/2)-1].doubleValue()+array[c/2].doubleValue())/2:array[c/2].doubleValue();
            return ret;
        }
        
        //输出(数组之和&数组内成员)
        public static String out(Number[] array){
            
            String ret = "";
            double sum = 0;
            for (int i = 0; i < array.length; i++) {
                ret += array[i];
                if(i!=99){
                    ret +=",";
                }
                sum += array[i].floatValue();
                sum = round(sum,2);
            }
            
            return sum+":"+ret;
            
        }
        
        //四舍五入,位数
        public static double round(double number,int digits){
            BigDecimal b = new BigDecimal(number);  
            return b.setScale(digits,BigDecimal.ROUND_HALF_UP).doubleValue();
        }
        
        
    }
    在未来,有一个强大的自己等着我,不想和他失约。
  • 相关阅读:
    Ignoring HTTPS certificates
    利用Httponly提升web应用程序安全性
    HttpUrlConnection java.net.SocketException: Software caused connection abort: recv failed
    DISPOSE_ON_CLOSE 和 EXIT_ON_CLOSE 的区别
    Swing多线程
    攒机知识积累
    数组最大子数组和
    fork()详解
    理解Socket编程【转载】
    STM32F407_LED代码
  • 原文地址:https://www.cnblogs.com/heasun/p/4645766.html
Copyright © 2020-2023  润新知