Selection Sort Tekniğini Keşfeden Kim?

C# (C Sharp) veya Java ile ilgili konuları buraya yazabilirsiniz.
Cevapla
memiky
Üye
Mesajlar: 116
Kayıt: 17 Kas 2004 01:52
İletişim:

Selection Sort Tekniğini Keşfeden Kim?

Mesaj gönderen memiky »

Herkese selam.. Sizlerden yardım talep ediyorum. Bir yazarımız aşağıda verdiğim örneği kendi C# konulu kitabından çaldığımı söyleyip beni mahkemeye verdi. Şu günlerde savunmamı hazırlayacağım. Sizden aşağıda verdiğim sıralama tekniğinin kullanıldığı kaynakları bulma konusunda sizden yardım talep ediyorum.

private void Sirala_Click(object sender, EventArgs e)
{
int[] dizi;
int i, j;
int gecici, eleman;
eleman = listBox1.Items.Count;
dizi = new int[eleman];
for (i = 0; i <= eleman - 1; i++)
dizi = Convert.ToInt32(listBox1.Items.ToString());
for (i = 0; i <= eleman - 1; i++)
{
for (j = 0; j <= eleman - 1; j++)
{
if (dizi[j] > dizi)
{
gecici = dizi;
dizi = dizi[j];
dizi[j] = gecici;
}
}
}
for (i = 0; i<=eleman - 1; i++)
listBox2.Items.Add(dizi.ToString());
}
}

Kişisel kanaatime göre en az 20 yıldır kullanılan ve çok bilinen bu sıralama tekniğinin adını burada anmadığım saygıdeğer yazarımızın buluşu olmadığını kanıtlama çabama katkı sağlayacak herkese şimdiden teşekkürler.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Google'ı açıp selection sort yazıp enter'e basınız.
Kullanıcı avatarı
lazio
Moderator
Mesajlar: 1527
Kayıt: 11 Tem 2003 04:55
Konum: İstanbul

Mesaj gönderen lazio »

Kod: Tümünü seç

private void Sirala_Click(object sender, EventArgs e)
{
    int[] dizi;
    int i, j;
    int gecici, eleman;
    eleman = listBox1.Items.Count;
    dizi = new int[eleman];
            
    for (i = 0; i <= eleman - 1; i++)
      dizi[i] = Convert.ToInt32(listBox1.Items[i].ToString());
            
    for (i = 0; i <= eleman - 1; i++)
    {
       for (j = 0; j <= eleman - 1; j++)
       {
           if (dizi[j] > dizi[i])
           {
               gecici = dizi[i];
               dizi[i] = dizi[j];
               dizi[j] = gecici;
           }
       }
    }

    for (i = 0; i <= eleman - 1; i++)
      listBox2.Items.Add(dizi[i].ToString());
} 
sanırım kodun çalışan hali bu olmalı..

ayrıca bu algoritma her programcının hiç bir yerde görmeden uydurabileceği bi algoritmadır.. Şahsen ben hiç bir yerde görmeden kullandıktan sonra adının selection sort olduğunu öğrenmiştim :lol:

http://www.c-sharpcorner.com/3/SortSeachNRS.asp
DeveloperToolKit

..::|YeşilMavi|::..
Kullanıcı avatarı
bluekid
Kıdemli Üye
Mesajlar: 541
Kayıt: 11 Haz 2004 10:45
İletişim:

Mesaj gönderen bluekid »

QA 76.6.S435 1983 Algorithms - Robert Sedgewick
bu kitapta bulunuyor
sayfa 143-..
An algorithm for selection must find the kth smallest item out of a file of
N items. Since an algorithm cannot guarantee that a particular item is the
kth smallest without having examined and identified the k- 1 items which are
smaller and the N - k elements which are larger, most selection algorithms
can return all of the k smallest elements of a file without a great deal of extra
calculation.


procedure seJect(J, r, k: integer);
var I;
begil 1
if r> J then
begin
i::=partition(J, r);
if i>J+k-1 then seJect(J, i-l, k);
if i<J+k-I then seJect(i+l, r, k-i);
end
end;
memiky
Üye
Mesajlar: 116
Kayıt: 17 Kas 2004 01:52
İletişim:

Mesaj gönderen memiky »

lazio arkadaş; zaten sorun da bundan kaynaklanıyor. Bizler imkanlar ölçüsünde kitapları, dergileri, siteleri vs inceliyoruz; bazen farkında olmadan etkileniyoruz.

Yapılan itirazın dayanak noktası "dizi", "i" ve "j" gibi 3 değişken adının kullanılması ve sıralamanın sonucunu okura gösterirken benim de ListBox'ı kullanmamdır. Elim kıralaydı da kodun işlevini gösterirken veya sıralanmış dizinin içeriğini gösterirken ListBox'ları kullanmasaydım!
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

i ve j değişken adlarını dünya üzerindeki hemen hemen bütün programcılar indeks ataması için kullanır. Bu gelenek olmuş birşey. Dayanak bu ise :)
memiky
Üye
Mesajlar: 116
Kayıt: 17 Kas 2004 01:52
İletişim:

Mesaj gönderen memiky »

Saygısızlık olarak algılanacağını düşünmesem mahkemeye sunulan suçlamaları ve bilirkişinin raporunu delphitürkiye'nin üyeleri ile paylaşmak isterdim. İşte size bilirkişi raporundan 2 cümle... Sanırım bilirkişi raporunu buraya yazmak suç değildir.

"... isimli yazarların kitaplarında kitaplarında kullandıkları değişken isimleri Memik Yanık isimli yazarın kitabındaki değişken isimleri benzerlik göstermektedir. aşağıda tespitte bulunduğum iki kitap arasındaki benzerlik gösteren değişken isimlerini belirttim.

deger - deger
gorunur gorunme
okuyaz - okuma_yazma
dosyaadi-dosya
"

ikinci sütundakiler benim kitapta kullandığım değişken adıdır. Keşke dosya yerine File kullansaydım, görünme ile ilgili özelliği temsil edecek değişken tanımlarken değişkene view vs deseydim.
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Algoritmayı kimin yazdığı ya da kimlerin katkısıyla bu hale geldiğini bilemiyorum. Fakat denildiği gibi herkesin kullandığı bir sıralama procedure ü. Değişkenlere de takılmanıza gerek yok. Siz de pekâlâ aynı değişkenleri kullanmış olabilirsiniz. Sadece telifi başkasına ait bir kodu izinsiz kullanamazsınız. Onun da kimden arakladığını sorabilirsiniz mesela. Başka kaynak ve kitaplarda geçiyor olması genel bir kod olduğunu gösterir :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Mesaj gönderen pro_imaj »

Öncelikle geçmiş olsun.

hukuki açıdan tanımlama ve değişken isimlerinin aynı olması bir yaptırım nedeni olmasa gerek.

Kod: Tümünü seç

private void Sirala_Click(object sender, EventArgs e)
{
int[] dizi;
int i, j;
int gecici, eleman;
eleman = listBox1.Items.Count;
dizi = new int[eleman];
for (i = 0; i <= eleman - 1; i++)
dizi = Convert.ToInt32(listBox1.Items.ToString());
for (i = 0; i <= eleman - 1; i++)
{
for (j = 0; j <= eleman - 1; j++)
{
if (dizi[j] > dizi)
{
gecici = dizi;
dizi = dizi[j];
dizi[j] = gecici;
}
}
}
for (i = 0; i<=eleman - 1; i++)
listBox2.Items.Add(dizi.ToString());
}
} 
bu işlemdeki değişkenlerin ing halini bulabilrseniz zaten sıralamadan ziyade değişken isimlerinyle ilgili sorunu kendi açınızdan özetleme imkanı edinmiş olacaksınız.

Kolay gelsin.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
Kullanıcı avatarı
karflake
Üye
Mesajlar: 222
Kayıt: 15 Haz 2003 03:57

Mesaj gönderen karflake »

Bu arada i, j, k kullanımı da Fortran'dan kalma bir alışkanlıktır. Fortran dilinde i, j, k vs. kullanıldığında bunlar otomatik olarak tamsayı(integer) tanımlanmaktadır.
Cevapla