C# módusz meghatározása?
Üdv! Az lenne a kérdésem, hogy van-e valami egyszerű mód egy növekvő sorrendbe rendezett listából megmondani a móduszt?
Van egy megoldásom, de az kicsit bonyolult és nem is kezeli azt az esetet, mikor esetleg több módusz is lehetséges.
Az én (szerintem bonyolult) megoldásom: (A növekvő sorrendbe rendezett lista a továbbiakban "list".)
int mode;
int sum = 1;
list<int> secondlist = new List<int>();
for(int i = 1; i < list.Count; i++)
{
if(list[i] == list[i-1]){ sum++;}
else{ secondlist.Add(sum); sum = 1;}
}
secondlist.Add(sum);
sum = 0;
for(int i = 0; i< secondlist.IndexOf(secondlist.Max()); i++)
{
sum = sum + secondlist[i];
}
mode = list[sum];
Uhh...
Ha nem valami rohadtnagy listáról van szó amit nem tudsz betölteni memóriába, akkor csak egyszerűen csoportosítd és darbszám szeirnrt csökkenő sorrendben vedd az értékeket. (Addig amíg a darabszám ugyanaz)
var list = new List<int> {5, 3, 1, 2, 0, 3, 4, 5, 2, 6, 1, 1, 4, 0, 2, 3, 2, 0, 2, 3, 1, 4, 1, 6};
var groups = list.GroupBy(x => x).OrderByDescending(x => x.Count());
int count = -1;
foreach (var g in groups)
{
int c = g.Count();
if (count != -1 && count != c) break;
Console.WriteLine(g.Key);
count = c;
}
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!