none
Dizi sıralanması hakkında bir sorum var RRS feed

  • Soru

  • S.a aşağıdaki dizide  for (int j = i+1; j <myArray.Length; j++)   i+1  yerine 1 yazıyorum dizi doğru bir şekilde sıralamıyor ne gibi fark var   i+1  zaten j eşit değilmi burda bu olayı bir türlü anlayamadım i+1 yerin 1 yazıyorum doğru sıralamıyor.....

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;

    namespace ConsoleApplication38
    {
        class Program
        {
            static void Main(string[] args)
            {

                int[] myArray = new int[10];
                Random rnd = new Random();
                for (int i = 0; i <myArray.Length; i++)
                {

                    myArray[i] = rnd.Next(0,100);
                }
                for (int i = 0; i < myArray.Length; i++)
                {
                    Console.WriteLine((i+1)+".Number = "+myArray[i]);
                }
                Console.WriteLine("------------------------------------");
                for (int i = 0; i < myArray.Length; i++)
                {
                    for (int j = i+1; j <myArray.Length; j++)
                    {
                        if (myArray[i]>myArray[j])
                        {

                            int myTemp = myArray[i];
                            myArray[i] = myArray[j];
                            myArray[j] = myTemp;

                        }

                    }
                }
                for (int i = 0; i < myArray.Length; i++)
                {
                    Console.WriteLine((i+1)+".New Number = "+myArray[i]);
                }

                Console.ReadKey();
            }
        }
    }                                                                        

    11 Ekim 2012 Perşembe 09:16

Yanıtlar

  • Hayir, i + 1 ile 1 ayni sey degil. Ic ice iki dongun var. Disaridaki dongunun ( for (int i = 0; ...) ) ilk gecisinde i + 1 = 1 dogru. Ama sonraki geciste i 1 oluyor  j = 2 olmasi gerekiyor. Sonra i 2, j 3 . Soyle bir kodla daha iyi anlayabilirsin:

    for (int i=0;i < 5; i++)
    {
      for (int j=i+1;j < 5; j++)
      {
        Console.WriteLine ("i: {0}, j: {1}", i, j);
      }
    }

    i+1 yerine 1 koydugunda ne aldigina bak ve aradaki farki anlamaya calis.

    Bu arada senin array sort islemi icin o blok yerine dogrudan Array.sort( myArray ) kullanabilrdin:

    //...
    Console.WriteLine("------------------------------------");
    
    Array.Sort( myArray );
    
    for (int i = 0; i < myArray.Length; i++)
    {
       Console.WriteLine((i+1)+".New Number = "+myArray[i]);
    }
    //...

    • Yanıt Olarak İşaretleyen Zerhan 11 Ekim 2012 Perşembe 14:14
    11 Ekim 2012 Perşembe 11:23
    Yanıtlayıcı

Tüm Yanıtlar

  • Hayir, i + 1 ile 1 ayni sey degil. Ic ice iki dongun var. Disaridaki dongunun ( for (int i = 0; ...) ) ilk gecisinde i + 1 = 1 dogru. Ama sonraki geciste i 1 oluyor  j = 2 olmasi gerekiyor. Sonra i 2, j 3 . Soyle bir kodla daha iyi anlayabilirsin:

    for (int i=0;i < 5; i++)
    {
      for (int j=i+1;j < 5; j++)
      {
        Console.WriteLine ("i: {0}, j: {1}", i, j);
      }
    }

    i+1 yerine 1 koydugunda ne aldigina bak ve aradaki farki anlamaya calis.

    Bu arada senin array sort islemi icin o blok yerine dogrudan Array.sort( myArray ) kullanabilrdin:

    //...
    Console.WriteLine("------------------------------------");
    
    Array.Sort( myArray );
    
    for (int i = 0; i < myArray.Length; i++)
    {
       Console.WriteLine((i+1)+".New Number = "+myArray[i]);
    }
    //...

    • Yanıt Olarak İşaretleyen Zerhan 11 Ekim 2012 Perşembe 14:14
    11 Ekim 2012 Perşembe 11:23
    Yanıtlayıcı
  • Yardımınız için çok teşekkür ederim ben üniversiteden dönerken kağıt üzerinde algoritmasını çizdim ve hatamı anladım :) aslında basit ama çok iyi bir şekilde dikkat lazım
    11 Ekim 2012 Perşembe 14:17