给定一个未排序的整数数组,找到其中位数。
中位数是排序后数组的中间值,如果数组的个数是偶数个,则返回排序后数组的第N/2个数。
样例
样例 1:
输入:[4, 5, 1, 2, 3]
输出:3
解释:
经过排序,得到数组[1,2,3,4,5],中间数字为3
样例 2:
输入:[7, 9, 4, 5]
输出:5
解释:
经过排序,得到数组[4,5,7,9],第二个(4/2)数字为5
挑战
时间复杂度为O(n)
注意事项
数组大小不超过10000
public class Solution {
/**
* @param nums: A list of integers
* @return: An integer denotes the middle number of the array
*/
public int median(int[] nums) {
// write your code here
int k;
//这里数组排序用了冒泡排序,也可以用效率更高的排序方法,也可以直接调用内置函数排序
for (int i=0;i<nums.length-1;i++){
for (int j=0;j<nums.length-i-1;j++){
int tmp;
if (nums[j]>nums[j+1]){
tmp=nums[j];
nums[j]=nums[j+1];
nums[j+1]=tmp;
}
}
}
int left=0;
int right=nums.length;
if (right%2==0) {
k=nums[((left+right)/2)-1];
}else{
k=nums[(left+right)/2];
}
return k;
}
}
输入
查看差别
[4,5,1,2,3]
输出
3
期望答案
3