Arkadaşlar şimdi iki tane aynı eleman sayısından oluşan bir dizim var. Bu dizi elemanları birinde sırasız diğerinde sıralı şekildedir. Buradaki temel amacım siralidizideki elemanları sirasizdizide olan indisi yakalayıp adim dizisine yazdırmaktı. Bu algoritma bunu yazabiliyor ancak tekrar eden rakamlarda aynı indis değerini giriyor bunu nasıl çözebilirim.
public static void Main()
{
var sirasizkaresi3 = new int[] { 3, 5, 7, 5, 4, 2, 2 };
var siralikaresi3 = new int[] { 2, 2, 3, 4, 5, 5, 7 };
var sonuc = SiralariBul(siralikaresi3, sirasizkaresi3);
for (int i = 0; i < sonuc.GetLength(0); i++)
{
Console.WriteLine($"{sonuc[i, 0]} degeri {sonuc[i, 1]}. sırada bulundu.");
}
}
public static int[,] SiralariBul(int[] dizi1, int[] dizi2)
{
int uzunluk = dizi1.Length;
int[,] sonuc = new int[uzunluk, 2];
int sonSira = 0;
for (int i = 0; i < dizi1.Length; i++)
{
int deger = dizi1[i];
sonSira = -1;
for (int x = 0; x < uzunluk; x++)
{
if (sonuc[x, 0] == deger)
sonSira = sonuc[x, 1] + 1;
}
sonuc[i, 0] = deger;
sonuc[i, 1] = Array.FindIndex(dizi2, sonSira > -1 ? sonSira >= dizi1.Length ? sonSira - 1 : sonSira : 0, x => x == deger);
}
return sonuc;
}