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();
    }

}
时间: 2024-10-10 16:52:52

Java冒泡算法及中位数算法的相关文章

算法(1)——Java冒泡算法

Java冒泡算法算是最常见的算法之一了.那么什么是冒泡算法呢?如下图所示(图片来自网络): 其实可以看到,第一遍的遍历过程中,首先比较第一对数字,比较交换完成后第二个数字一定是比较大的,接下来比较第二对,同样进行比较交换,那么这个时候第三个数一定是较大的,这样所有的数对比较完成之后,最大的数字就会冒泡到数组的最右侧.接下来第二轮就可以把第二大的数放在右侧数第二个位置上,以此类推...当遍历一遍没有可以交换的数字的时候,就说明这个队列已经是有序的了. 1 public static void ma

java:快速排序算法与冒泡排序算法

 Java:快速排序算法与冒泡算法 首先看下,冒泡排序算法与快速排序算法的效率: 如下的是main方法: public static void main(String[] args) { //快速排序算法测试 int[] qArray = new int[100000]; for (int i = 0; i < 100000; i++){ qArray[i] = (int) (Math.random() * 100000); } long beforeQ = System.currentTi

[java初探06]__排序算法的简单认识

今天,准备填完昨天没填的坑,将排序算法方面的知识系统的学习一下,但是在简单的了解了一下后,有些不知如何组织学习了,因为排序算法的种类,实在是太多了,各有优略,各有适用的场景.有些不知所措,从何开始. 最后按照常规思路,我将逐次从排序算法的了解,常用的几种排序算法的原理及实现,几种算法的对比以及适用场景.三个方面展开对排序算法的学习. 排序算法的基本了解 在我们学习一样知识,技术之前,首先我们应当对它有一个基本的了解,然后在了解的基础上逐渐深入学习. 在计算机科学与数学中,排序算法(Sorting

数据结构精要------冒泡与直接排序算法

作为程序员的我们在程序开发的时候经常会用到一些简单的排序算法,例如:对数组进行快速排序:要实现这些就需要运用到数据结构排序算法的知识,那么熟练使用和掌握排序算法对于开发人员来说是百利而无一害.同时记录一下知识点也是自己对自己的进一步巩固总结: 那么何为排序算法呢? 排序是计算机内经常进行的一种操作,其目是一组 "无序 "的记录序列调整为 "有序 "的记 录序列.排序分内排序和外排序. 那么何为内排和外排呢? 内排序 :指在排序 期间数据对象全部存放在内存排序. 外排

算法 《秦九韶算法java实践》

[历史背景] 秦九韶算法是中国南宋时期的数学家秦九韶表述求解一元高次多项式的值的算法--正负开方术.它也可以配合牛顿法用来求解一元高次多项式的根.在西方被称作霍纳算法(Horner algorithm或Horner scheme),是以英国数学家威廉·乔治·霍纳命名的. [原理解释] 设有n+1项的n次函数 f(x)=anxn+ an-1xn-1+an-2xn-2+ an-3xn-3+-- a2x2+a1x+ a0 将前n项提取公因子x,得 f(x)=(anxn-1+ an-1xn-2+an-2

Java哈希散列算法简介 - MD5 &amp; SHA-512

Java哈希散列算法简介 - MD5 & SHA-512 在日常的开发工作中,我们常常会碰到这样的一个场景:我们需要有一种可靠的行之有效的方法来检验跟判断数据在传输过程当中的完整性.最常见的一种情况就是当我们传输文件的时候,由于网络故障或者其他的一些因素,可能会出现我们下载下来的文件不完整,这给我们日常的开发和维护带了一些难题:另外的一个较为常用的场景就是:有没有一种行之有效的方法让我们可以很方便的判断服务器上的文件是不是有最新的数据更新,比如我们现在的移动Hybird App开发,我们经常会发

php与java通用AES加密解密算法

php与java通用AES加密解密算法 AES指高级加密标准(Advanced Encryption Standard),是当前最流行的一种密码算法,在web应用开发,特别是对外提供接口时经常会用到,下面是我整理的一套php与java通用的AES加密解密算法. php版代码如下: <?php class CryptAES { protected $cipher = MCRYPT_RIJNDAEL_128; protected $mode = MCRYPT_MODE_ECB; protected

&quot;如何用70行Java代码实现深度神经网络算法&quot; 的delphi版本

http://blog.csdn.net/hustjoyboy/article/details/50721535 "如何用70行Java代码实现深度神经网络算法" 的delphi版本 2016-02-23 10:58 225人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. =====ann.pas源程序=================================== { by 阿甘 2016.2.23 参考自此篇文档如何用70行Java代码实现

java实现的集中排序算法

嗯,在经典的排序算法里面,有:冒泡排序,选择排序,插入排序,希尔排序,二叉归并排序,快速排序,堆排序 下面给出java的实现方式,不过快速排序没有搞定,研究中 package net.itaem.sort; /** * 数组排序 * */ public class ArraySorted { /** * 冒泡排序(而且是简单的冒泡排序,应该属于交换排序,不属于经典的冒泡排序) * */ public static void bubble(int[] source){ if(source.leng