81 lines
2.2 KiB
Java
81 lines
2.2 KiB
Java
/**
|
||
* @author 令照辉 [zeekling@163.com]
|
||
* @version 1.0
|
||
* @apiNote
|
||
* @since 2018-06-27
|
||
*/
|
||
public class Program {
|
||
|
||
/**
|
||
*
|
||
* @param arr 需要排序的数组
|
||
*/
|
||
private static void mergeSort(int[] arr) {
|
||
int[] tmp = new int[arr.length];
|
||
internalMergeSort(arr, tmp, 0, arr.length - 1);
|
||
}
|
||
|
||
/**
|
||
*
|
||
* @param arr 需要排序的数组
|
||
* @param tmp 暂时存放数据
|
||
* @param left
|
||
* @param right
|
||
*/
|
||
private static void internalMergeSort(int[] arr, int[] tmp, int left, int right) {
|
||
if (left < right) {
|
||
int middle = (left + right) / 2;
|
||
internalMergeSort(arr, tmp, left, middle);
|
||
internalMergeSort(arr, tmp, middle + 1, right);
|
||
mergeArray(arr, tmp, left, middle, right);
|
||
}
|
||
}
|
||
|
||
/**
|
||
*
|
||
* @param arr
|
||
* @param tmp
|
||
* @param left
|
||
* @param middle
|
||
* @param right
|
||
*/
|
||
private static void mergeArray(int[] arr, int[] tmp, int left, int middle, int right) {
|
||
int i = left, j = middle + 1, k = 0;
|
||
while (i <= middle && j <= right) {
|
||
if (arr[i] <= arr[j]) {
|
||
tmp[k++] = arr[i++];
|
||
} else {
|
||
tmp[k++] = arr[j++];
|
||
}
|
||
}
|
||
while (i <= middle) tmp[k++] = arr[i++];
|
||
while (j <= right) tmp[k++] = arr[j++];
|
||
for (i = 0; i < k; i++)
|
||
arr[left + i] = tmp[i];
|
||
}
|
||
|
||
|
||
/**
|
||
* 输出格式:第11大的数,除前十个大数以外的所有数字的中位数
|
||
* @param args
|
||
*/
|
||
public static void main(String[] args) {
|
||
if (args == null || args.length <= 10) return;
|
||
int[] arr = new int[args.length];
|
||
for (int i = 0;i<args.length;i++){
|
||
arr[i] = Integer.valueOf(args[i]);
|
||
}
|
||
mergeSort(arr);
|
||
int even = (10 + arr.length)%2;//判断是否为偶数
|
||
if (even == 0){
|
||
double add = arr[(10 + arr.length -1)/2] + arr[(10 + arr.length +1)/2];
|
||
double middle = (add)/2;
|
||
System.out.println(arr[10]+","+ middle);
|
||
}else{
|
||
int middle = arr[(10 + arr.length)/2];
|
||
System.out.println(arr[10]+","+ middle);
|
||
}
|
||
|
||
}
|
||
}
|