C# kod nasıl sadeleştirilir?

Furkan45

Hectopat
Katılım
31 Temmuz 2019
Mesajlar
1.139
Çözümler
3
Yer
Manisa
Daha fazla  
Cinsiyet
Erkek
Meslek
Üniversite Öğrencisi
C# de dizi sorusu yapıyorum. Kodda olduğu gibi verilen sayılar küçükten büyüğe sıralanacak. Kodu daha önce yaptığım Java kodunda uyarladım bir kısmını ama bazı kısımlar fazlalık gibi duruyor. Dizilerin mantığını pek kavrayamadım kodu sadeleştirmede yardımcı olur musunuz?
C#:
   int temp;
        int[] dizi = { 5, 2, 1, 4, 6, 0, 7 };
            for (int i = 0; i < 6; i++)
        {
                for (int j = 0; j < 6; j++)
                {
                    if ((dizi[j] > dizi[(j + 1)]))
                    {
                        temp = dizi[j];
                        dizi[j] = dizi[(j + 1)];
                        dizi[(j + 1)] = temp;
                    }
            }

            }

            for (int j = 0; j < 7; j++)
            {
               Console.Write(dizi[j] + " ");
               
            }
            Console.ReadLine();
 
İlk öncelikle for looplar için 6 sayısını yazmayın, böyle durumlarda statik değerler kullanmak iyi bir fikir değil. 6 sayısını dizi.Length ile değiştirmenizi şiddetle öneririm. Aynı şekilde aşağıda output verirken de bir önce dediğimi uygulamanızı öneririm.

Ayrıca değişkenlere türkçe isimler koymamanızı öneririm, ingilizce genel anlamda herkes tarafından okunabildiğinden dolayı kodunuzu diğer okuyacaklar için daha kolaylaştırır ve bu özellikle açık kaynak kodlu projelerde önemlidir ama kişisel projelerinizdede kullanılmasını öneririm, iyi bir alışkanlıktır.

Ve bunu kısaltmanın çok güzel bir yolu var, "Array.Sort" bu hızlı ve kısa bir şekilde bütün diziyi sortlar ve bu kodu yazmanıza gerek kalmaz.

Ayrıca bu bubble sorttur ve O(n^2) time complexitysine sahip olduğundan dolayı yavaştır. Bunun yerine quick sorta bakmanızı öneririm veya yukarıda dediğim gibi Array.Sort fonksiyonunu kullanabilirsiniz.
 
İlk öncelikle for looplar için 6 sayısını yazmayın, böyle durumlarda statik değerler kullanmak iyi bir fikir değil. 6 sayısını dizi. Length ile değiştirmenizi şiddetle öneririm. Aynı şekilde aşağıda output verirken de bir önce dediğimi uygulamanızı öneririm.

Ayrıca değişkenlere Türkçe isimler koymamanızı öneririm, İngilizce genel anlamda herkes tarafından okunabildiğinden dolayı kodunuzu diğer okuyacaklar için daha kolaylaştırır ve bu özellikle açık kaynak kodlu projelerde önemlidir ama kişisel projelerinizdede kullanılmasını öneririm, iyi bir alışkanlıktır.

Ve bunu kısaltmanın çok güzel bir yolu var, "array. Sort" bu hızlı ve kısa bir şekilde bütün diziyi sortlar ve bu kodu yazmanıza gerek kalmaz.

Ayrıca bu bubble sorttur ve o(n^2) time complexitysine sahip olduğundan dolayı yavaştır. Bunun yerine quick sorta bakmanızı öneririm veya yukarıda dediğim gibi array. Sort fonksiyonunu kullanabilirsiniz.

Sadece for ve if kullanarak yapın demiş hocamız o yüzden böyle yaptım. Dizi ve iç içe for olunca kafam karışıyor biraz kodu tam olarak sadeleştiremedim.
 
C#:
int[] dizi = { 5, 2, 1, 4, 6, 0, 7 };
for (int i = 0; i < dizi.Length; i++)
{
    for (int j = i + 1; j < dizi.Length; j++)
    {
        if (dizi[i] > dizi[j])
        {
            int temp = dizi[i];
            dizi[i] = dizi[j];
            dizi[j] = temp;
        }
    }
}

foreach (int i in dizi)
{
    Console.Write(i + " ");
}
 
int[] dizi = { 5, 2, 1, 4, 6, 0, 7 }; for (int i = 0; i < dizi.Length; i++) { for (int j = i + 1; j < dizi.Length; j++) { if (dizi > dizi[j]) { int temp = dizi; dizi = dizi[j]; dizi[j] = temp; } } } foreach (int i in dizi) { Console.Write(i + " "); }
Teşekkürler bu hali işimi görür herhalde.
 

Geri
Yukarı