1662. 中位數下標
給出一個含有 n
個互不相等整數的無序數組,找到其中中位數的下標。下標從 0 開始。
中位數是指這些數排序後最中間的數。
若 n
爲偶數,則中位數是數組排序後的第 n/2
個數。
樣例
樣例 1:
輸入:[4,5,1,2,3]
輸出:4
樣例 2:
輸入:[7,9,4,5]
輸出:3
代碼區:
public class Solution {
/**
* username:softstarhhy
* @param a: the array a
* @return: return the index of median
*/
public int getAns(int[] a) {
int midnum=0;
int loc=0;//回溯位置
int[] b=new int[a.length];
for(int k=0;k<a.length;k++)
{
b[k]=a[k];
}
// write your code here
for (int i=0;i<a.length ;i++ )
{
for( int j=a.length-1;j>i;j--)
{
if(a[j]<a[j-1])
{
int mid=a[j];
a[j]=a[j-1];
a[j-1]=mid;
}
}
}
/*if(a.length%2==0)
{
midnum=(a.length/2)+2;
}
else
{
midnum=(a.length+1)/2+1;
System.out.println(midnum);
}*/
// 尋找中位數在原數組的位置
int m = a.length;
int curnum=0;
if (m%2==0){ //中位數判斷條件
curnum= a[m/2-1];
//重新在亂序原數組中尋找中位數位置
for(int n=0;n<b.length;n++)
{
if(curnum==b[n])
{
loc= n;
}
}
}
else{
curnum= a[m/2]; //中位數判斷條件
//重新在亂序原數組中尋找中位數位置
for(int n=0;n<b.length;n++)
{
if(curnum==b[n])
{
loc= n;
}
}
}
return loc;
}
}