folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder Quick Sort Ve Merge Sort'un Sıralama Süresini Nasıl Hesaplayabilirim ?



Quick Sort Ve Merge Sort'un Sıralama Süresini Nasıl Hesaplayabilirim ?

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    GodKlaus
    GodKlaus's avatar
    Kayıt Tarihi: 13/Ocak/2014
    Erkek

    Günaydın. Hoca 5 tane sort öğretti bunlardan 2 tanesi quick sort ve merge sort.

    Bu iki sıralama algoritmasıda recursive(özyineleme) türündeki fonksiyonlar. Bu sıralama algoritmalarının 500,000 sayı için sıralama süresini hesaplatmam lazım.

    Öteki 3 sıralama(insertion , bubble , selection ) için yazdım fakat bu fonksiyonlar recursive oldukları için beceremedim.

    Örnek kod şu

       // MERGE SORT BASLANGICI \\
             public void AnaMerge(int[] Array, int sol, int orta, int sag, int size)
            {
                var sure = System.Diagnostics.Stopwatch.StartNew();
    
                int[] temp = new int[size];
                int i, eol, num, pos;
    
                eol = (orta - 1);
                pos = sol;
                num = (sag - sol + 1);
    
                while ((sol <= eol) && (orta <= sag))
                {
                    if (Array[sol] <= Array[orta])
                        temp[pos++] = Array[sol++];
                    else
                        temp[pos++] = Array[orta++];
                }
    
                while (sol <= eol)
                    temp[pos++] = Array[sol++];
    
                while (orta <= sag)
                    temp[pos++] = Array[orta++];
    
                for (i = 0; i < num; i++)
                {
                    Array[sag] = temp[sag];
                    sag--;
                }
    
                sure.Stop();  // İşlem bittikten sorna sayaç durdurulur.
                listBox7.Items.Add(sure.ElapsedMilliseconds + " ms");
                listBox8.Items.Add(Array.Length);
            }
            
    
             public void SortMerge(int[] Array, int sol, int sag,int size)
            {
                int mid = 0;
    
                if (sag > sol)
                {
                    mid = (sag + sol) / 2;
                    SortMerge(Array, sol, mid,size);
                    SortMerge(Array, (mid + 1), sag,size);
    
                    AnaMerge(Array,sol,(mid + 1),sag,size);
                    
                }
            }
    
    
            // MERGE SORT SONU \\

    Button4 bir diziye rastgele 500000 sayı atıyor. Bende bu diziyi SortMerge isimli fonksiyona yolluyorum. sonra işte ikiye  bölüyor büyük mü küçük mü filan diyor.

    Çıktının Şu tarz birşey olmasını istiyorum

    ama yukardaki kod hata veriyor. Aklıma başka çözüm yolu olarak işlemin bitiş saatinden başlangıç saatini çıkartıp 1000 ile çarpmak geldi fakat onuda beceremedim.

     Yardımcı olurmusun :D

     

    EDIT : Tamamdır Çözdüm Çalışıyor Şuanda :D 1 saat içinde eklerim source kodu :D

    GodKlaus tarafından 10/Mar/17 09:30 tarihinde düzenlenmiştir

    Telegram : @CuneytKuscu && Discord : Tyenuc#2679 | İstanbul Avr. Yazılım Mühendisi ve sonunda işim var (:
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    whopper
    whopper's avatar
    Kayıt Tarihi: 26/Haziran/2008
    Erkek

    Yanlis yere koymussun saati. Main ac bi tane. Mergesort recursive kisim. Anamerge dedigin geri toplama safhasi. Mainden mergesortu baslatmadan once saati koy fonkiyon call sonrasi satirdada end et saati. Bu arada anladigim kadariyla divide and conquer alg. anlamamissin tekrar et.

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    GodKlaus
    GodKlaus's avatar
    Kayıt Tarihi: 13/Ocak/2014
    Erkek
    whopper bunu yazdı

    Yanlis yere koymussun saati. Main ac bi tane. Mergesort recursive kisim. Anamerge dedigin geri toplama safhasi. Mainden mergesortu baslatmadan once saati koy fonkiyon call sonrasi satirdada end et saati. Bu arada anladigim kadariyla divide and conquer alg. anlamamissin tekrar et.

    İşin aslı şu hocam. Bu 5 sorgunun 500,000 ayıyı dizmesi için geçen süreyi gösteren program yapmam lazım ya. Main fonksiyondan kastın sanırım Form_Load. ve Form_Load'da birsürü şey var. İşlem başladığında bi sayaç koydum eğer 0sa1 yap 1veya daha fazlaysa dokunma dedim. Sonra 1 olduğu andaki saati aldırıp işlem bittiğindeki saatten çıkarttım. Hocaya söyledim böyle böyle yaptım diye. Hata payı çok yüksek olmaz öyle başka birşey düşün dedi. 

    Aklıma gelmiyor ve yazdıklarından sadece "Main aç bi tane" kısmını anlamadım ):


    Telegram : @CuneytKuscu && Discord : Tyenuc#2679 | İstanbul Avr. Yazılım Mühendisi ve sonunda işim var (:
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    whopper
    whopper's avatar
    Kayıt Tarihi: 26/Haziran/2008
    Erkek

    dönem başında yapmıştım javada bunu. 5 sortu aynı arrayleri karşılaştırmak üzere N sayıda sort ile, sonrada çıktı sonuçlarını analiz etmiştim: https://drive.google.com/open?id=0B73c9YuqOJmSM1Npdl84dnY4dGVodTM2UUxST1NrTTlpZDJN

     

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    GodKlaus
    GodKlaus's avatar
    Kayıt Tarihi: 13/Ocak/2014
    Erkek
    whopper bunu yazdı

    dönem başında yapmıştım javada bunu. 5 sortu aynı arrayleri karşılaştırmak üzere N sayıda sort ile, sonrada çıktı sonuçlarını analiz etmiştim: https://drive.google.com/open?id=0B73c9YuqOJmSM1Npdl84dnY4dGVodTM2UUxST1NrTTlpZDJN

     

    teşekkürler hocam inceliyorum şimdi :)


    Telegram : @CuneytKuscu && Discord : Tyenuc#2679 | İstanbul Avr. Yazılım Mühendisi ve sonunda işim var (:
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    GodKlaus
    GodKlaus's avatar
    Kayıt Tarihi: 13/Ocak/2014
    Erkek

    Evveeet sonunda bitirdim :D Birazcık amatörce oldu lakin bitti :D

    -- Buradada source code var. İncelemek isteyenler bakabilirler :D

    https://drive.google.com/drive/folders/0B2HM483lS-R6NDUxdjZxWHl4RDQ?usp=sharing 

     


    Telegram : @CuneytKuscu && Discord : Tyenuc#2679 | İstanbul Avr. Yazılım Mühendisi ve sonunda işim var (:
Toplam Hit: 970 Toplam Mesaj: 6
c# sort merge sort counting