İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. SDN Programlama Kafe
SDN Programlama Kafe

Matriste sıralama - selection sort

cnak21.03.20113 cevap8.428 görüntüleme
2010'den beri14 mesaj
#1
elimde bir matris var son sütuna bakarak(küçükten büyüğe) matrisi değiştirmek istiyorum.bunun için ne kullanmalıyım nasıl düşünmeliyim?
örnek:
elimdeki matris bu olsun

20435
91827
50123

son sütuna bakılıyor
5
7
3

küçükten büyüğe doğru sıralansın istiyorum.matrisin son hali şu şekilde olacak yani

50123
20435
91827
Cevaplar
2008'den beri3.195 mesaj
#2
Aynı boyutta ikinci ve tanım değer kümesi boş bir matris oluştur. İçi içe iki tane döngü yeterlidir. Birincisi değerleri alacağın matrisi dolaşacak, ikincisi ise boş matrise karşılaştırma yapıp yazacak.
İkinci yöntemde kullandığın dil C ise pointer kullanabilirsin. Tek döngü ile de hallolur bu yöntemde. Kolay gelsin.
2008'den beri357 mesaj
#3
c# kodu aşağıda:

static void Main(string[] args)
{
int a = 0, b = 0;


int swap;
int m = 0, n = 0;
Console.WriteLine("Enter size of matrix:");
a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Enter size of matrix:");
b = Convert.ToInt32(Console.ReadLine());

int[,] arr = new int[a, b];
int[,] ydk = new int[a, b];
//matrix elemanlarını giriyorsun
for (int i=0; i < a; i++)
{
for (int j=0; j < b; j++)
{
Console.WriteLine("Enter matrix number");
arr[i, j] = Convert.ToInt32(Console.ReadLine());

ydk[i, j] = arr[i, j];

}
}
//matrixdeki son elemanları bakıp ona göre sort ediyor
for (int i = 0; i < a; i++)
{
for (int j = i; j < a; j++)
{
//ilk eleman son elemandan büyükse yer değiştiriyor.
if (arr[i, b-1] > ydk[j, b-1])
{
for (m = j; m < j+1; m++)
{
for (n = 0; n < b; n++)
{
swap = ydk[m,n];
ydk[m,n] = ydk[m - 1,n];
ydk[m - 1,n] = swap;
}
}
}
}
}
//ekrana bastırıyor.
for (int i = 0; i < a; i++)
{
for (int j = 0; j < b; j++)
{
Console.Write("{0}", ydk[i,j]);

}
Console.WriteLine();
}
Console.ReadLine();
}

kosasker doğru söylemiş. benim yaptığımda onun söleydiği esasında. matrixle uğraşıyosan 2. bir boş array hazırlaman gerekiyor.
2007'den beri2.589 mesaj
#4
ikinci matrise gerek kalmayabilir.
karşılaştırmayı yap ( sorting algoritmaları yardımcı olacaktır ) mesela 3.satırı 2. satıra koymak istiyorsun. yani aslında yer değiştireceksin bunları.

bir swap metodu yazarsın
void swap (int *a,int *b) {
    int t;
    t=*a; //veriyi sakla.
    *a=*b; // verinin üzerine yaz
    *b=*t; //saklanan veriyi değişim noktasına koy. 
   return;
}

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.