java如何计算中位数_Java冒泡算法及中位数算法

importjava.math.BigDecimal;public classTest {public static voidmain(String[] args) {//控制随机数量

int c = 100;

Number[] array= newNumber[c];/*初始化*/

for(int i=0;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 staticNumber[] sort(Number[] array){for(int i=0;i

for(int j=i+1; j

Number temp;//这里可以控制正序或逆序

if(array[i].doubleValue()

temp=array[i];

array[i]=array[j];

array[j]=temp;

}

}

}returnarray;

}//中位数算法

public static doublegetMidNum(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();returnret;

}//输出(数组之和&数组内成员)

public staticString 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,intdigits){

BigDecimal b= newBigDecimal(number);returnb.setScale(digits,BigDecimal.ROUND_HALF_UP).doubleValue();

}

}

你可能感兴趣的:(java如何计算中位数)