Bu yazıda, C # dizisindeki en sık rastlanan öğeyi bulmanın farklı yollarını öğreneceğiz.
Çözüm 1 LINQ ile gruplama:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | class Program { public static void EnCokTekrar(int[] sayilar) { var gruplar = sayilar.GroupBy(x => x); var enfazla = gruplar.OrderByDescending(x => x.Count()).First(); Console.WriteLine("En çok tekrar eden {0} sayısı {1} sefer tekrar ediyor", enfazla.Key, enfazla.Count()); } static void Main(string[] args) { int[] array = new int[20] { 6, 6, 8, 5, 3, 4, 3, 6, 4, 3, 1, 3, 5, 7, 6, 4, 4, 3, 5, 7 }; EnCokTekrar(array); Console.ReadLine(); } } |
Çözüm 2 Hashtable:
Dizi içindeki en sık rastlanan öğeyi bulmak için Hashtable’ı kullanabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | class Program { static void EnCokGecen(int[] array, Hashtable hs) { int enCok = array[0]; int tekrar = 0; foreach (int num in array) { if (!hs.ContainsKey(num)) { hs.Add(num, 1); } else { int tempTekrar = (int)hs[num]; tempTekrar++; hs.Remove(num); hs.Add(num, tempTekrar); if (tekrar < tempTekrar) { tekrar = tempTekrar; enCok = num; } } } foreach (DictionaryEntry girdi in hs) { Console.WriteLine("{0}, {1}", girdi.Key, girdi.Value); } Console.WriteLine("Dizi içinde en çok " + enCok + " sayısı " + tekrar + " sefer tekrar ediyor."); } static void Main(string[] args) { int[] array = new int[20] { 6, 6, 8, 5, 3, 4, 3, 6, 4, 3, 1, 3, 5, 7, 6, 4, 4, 3, 5, 7 }; Hashtable hs = new Hashtable(); EnCokGecen(array, hs); Console.ReadLine(); } } |
Çözüm 3:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | class Program { public static void EnCokTekrar(int[] sayilar) { var adetler = new Dictionary<int, int>(); foreach (int sayi in sayilar) { int adet; adetler.TryGetValue(sayi, out adet); adet++; adetler[sayi] = adet; } int enCokTekrarEden = 0, TekrarSayisi = 0; foreach (var cift in adetler) { if (cift.Value > TekrarSayisi) { TekrarSayisi = cift.Value; enCokTekrarEden = cift.Key; } } Console.WriteLine("En çok tekrar eden {0} sayısı {1} sefer tekrar ediyor", enCokTekrarEden, TekrarSayisi); } static void Main(string[] args) { int[] array = new int[20] { 6, 6, 8, 5, 3, 4, 3, 6, 4, 3, 1, 3, 5, 7, 6, 4, 4, 3, 5, 7 }; EnCokTekrar(array); Console.ReadLine(); } } |
Çıktı:
Yorum Yap