/ / Nájdenie strednej hodnoty poľa s výberom zoradenia - java, polia, stredná hodnota

Hľadanie mediánu poľa s výberom triedenia - java, polia, medián

Snažím sa nájsť mediánu od netriedenýchpole v Jave. Najprv musím na triedenie poľa použiť techniku ​​výberu triedenia a na triedenie nemôžem použiť žiadne metódy knižnice Java (teda žiadne Arrays.sort (pole)). Tiež nemôžem zoradiť celé pole. Môžem zoradiť iba toľko prvkov, koľko je potrebné na nájdenie mediánu poľa. Predpokladám, že pre párne pole by to bola iba polovica prvkov plus jedna (potom nájdite priemer posledných dvoch prvkov) a pre nepárne pole by to bola iba polovica prvkov (posledná je stredná hodnota).

Takže neviem, ako zastaviť výber v pravý čas a nájsť strednú hodnotu z posledného prvku alebo dvoch čiastočne zoradených polí. Nižšie uvádzam, čo mám zatiaľ.

import java.util.Arrays;

public class EfficientMedian
{
public static void median(int[] values)
{
int i, j, temp;
double median;

//selection sort below
for (i = 0; i < values.length - 1; i++)
{
for (j = i + 1; j < values.length; j++)
{
if (values[i] > values[j])
{
temp = values[i];
values[i] = values[j];
values[j] = temp;
}
}
}
if (values.length % 2 == 0) //if the array is even
{
median = values[values.length/2]; //just a placeholder
}
else //if the array is odd
{
median = values[values.length/2];
}
System.out.println(Arrays.toString(values));
System.out.println(median);
}
public static void main(String[] args)
{
int[] array1 = {567, 2, 600, 6, 601}, array2 = {45, 300, 46, 49};
median(array1);
median(array2);
}
}

odpovede:

1 pre odpoveď č. 1

Vaša prvá slučka vyberie prvky na zoradenie. Ak potrebujete iba strednú hodnotu, musíte zoradiť iba prvky dĺžka / dĺžka / 2 prvky. Mali by ste to teda upraviť:

for (i = 0; i < values.length - 1; i++)
{
...
}

na

for (i = 0; i < values.length/2; i++)
{
...
}

a fyi v prípade „dĺžka poľa je nepárne“, konvenciou je priemerovať stredné dve hodnoty.