需求:在数据表中根据条件查询出所有数据的“时间差”字段(类型为bigint),统计好中位数显示在页面上
方法思路:将数据库获取到的时间差数据存放在数组中,写一个求中位数的方法,传入数组返回中位数。
代码:
//根据传入的数组求中位数
public static long median(Long[] leadTime){
if(leadTime.length==o){
return 0;
}
long start=0;
long end=leadTime.length-1;
long inde=partition(leadTime,start,end);
if(leadTime.length%2==0){
while(index!=leadTime.length/2-1){
if(index>leadTime.length/2-1){
index=partition(leadTime,statrt,index-1);
}else{
index=partition(leadTime,index+1,end);
}
}
}
return leadTime[(int)index];
}
private static long partition(long leadTime[],long start,long end){
long left=start;
long right=end;
long pivot=leadTime[(int)left];
while(left<right){
while(left<right&&leadTime[(int)right]>pivot){
right--;
}
if(left<right){
leadTime[(int)left]=leadTime[(int)right];
left--;
}
while(left<right&&leadTime[(int)left]<=pivot){
left++;
}
if(left<right){
leadTime[(int)right]=leadTime[(int)left];
right--;
}
}
leadTime[(int)left]=pivot;
return left;
}