19 Temmuz 2012 Perşembe

ESKİ (!) DOST..

Bir arkadaşım vardı, dost kısmından. Çok eskilere dayanıyordu dostluğumuz (!). Aynı şehir, aynı mahalle, aynı okul, sonra tekrar aynı şehir, aynı mahalle, birbirine çok yakın okullar vs. Aslında birazda zorunluluklar  bizi bir araya getirmiş şimdi böyle görüyorum olayları. Bütün bunlara rağmen anlaşamadığımız bir çok nokta olduğu açıktı. Bu yazıda bir dost ya da arkadaş ile ilgili genel bir değerlendirme ve bu değerlendirmeye bağlı bir sonuç olacak.

Sürekli sorunlar çıkıyordu aramızda. Çok uzun zamandır gülerek ya da sevişerek ayrıldığımızı hatırlamıyorum. Her ayrıldığımızda kesin olarak kırgın ya da kızgın ayrılıyoruz. Bu her iki taraf içinde geçerli. 

Daima birbirimizi suçluyoruz. İkimizde haklıyız; fakat bunu kabullenemiyoruz. Ha sözde, konuşurken belkiler havada uçuşuyor. Ama sadece ağızdan çıkıyor, kalben ya da mantıken haksız olduğumuzu kabul edemiyoruz.    Daima birimiz haklı, diğerimiz haksız. Bunu, özellikle birkaç saat önce daha iyi anladım. 

Bu güne kadar onlarca ya da yüzlerce kez ayrılıp barıştık. Her defasında iyi şeylerle temenni ettik birbirimizi. Lakin yarım saat sonra aynı sorun. Sanki az önce konuşanlar biz değildik.  

Her ikimizinde suçlamaları aynı. Ona göre ben A fiilini yapmışım, ironisi bu ya bana göre de o A fiilini yapmış. İkimizde aynı şeylerle birbirimize ithamlarda bulunuyoruz. Ee? Hata kimde ya da nerede? Buna bir çözüm getiremedik bir türlü.

Biraz önce bir  düşündüm, beraberdik. Aynı durum. Değişmiyor, değiştiremiyoruz. O konuşurken biraz uzaklara gittim. Açıkçası o andan itibaren fazla dinlemedim. Çünkü aynı şeylerden bahsediyoruz devamlı. Ayrı kaldığımız zamanlarda bana hissettirdikleri ne? Yokluğu bana ne kattı, varlığı bana ne kattı? 

 Doğru cevap:  HİÇBİR ŞEY ya da ÇOK AZ ŞEY! 

Sanırsam onun içinde aynı.

Sonra geri döndüm aynı şeylere devam!!! Yani kendimi sözcüklerden geri kalmış hissetmedim.

Uzun zamandan beri yanında sıkılmaya başlamıştım. Muhtemelen aynı durum onun için de geçerli. Soruyorum kendime niye onunla her buluştuğumda içim daralıyor ya da eve her geldiğimde gergin oluyorum? 

Ve bu gece, bu yazıyı yazmadan az önce bir karar aldım. Onu hayatımdan çıkartıyorum. Radikal bir karar!

Şu söze geleceğim, yanındayken huzur bulmadığınız bir kişi ile aynı yolda yürümeyin. Size bir  şey katmayan ya da sizin bir şey katamadığınız bir kişi ile aynı yolda yürümeyin. Yokluğu bir şey ifade etmeyen bir insanla aynı yolda yürümeyin.

Benden size blog usulü tavsiye. 

1 Temmuz 2012 Pazar

INSERTION SORT


  • Insertion_sort verilen dizideki elemanları, kendi isteğimiz doğrultusunda sıralamamıza yardımcı olur.
  • Yerinde sıralama yapar.
  • Eğer verilen dizi sıralı ise T(n)=Q(n) 'dir.
  • Eğer verilen dizi ters sıralı ise T(n)=Q( n2 )'dir.
  • Eğer verilen dizi karışık sıralı ise T(n)=Q( n2 )'dir.
_____________________________________________________

Algoritması:

insertion_sort(A)

  for j <-- 2 to length [A]
      do key <-- A[j]
         i <-- j-1
     
         while i>0  and A[i] > key
               do A [i+1] <-- A[i]
                    i <-- i-1

         A[i+1] <--key

_____________________________________________________

Bir örnek vermek gerekise, bize verilen dizi:

A[ ] ={5,2,4,6,1}  olsun. Şimdi bu algoritmaya göre bu diziyi sıralayalım. Burada dizinin ilk elemanı A[0] değil A[1] 'dir.

Burada ilk olarak,
i=1  ,  j=2  ,  key=2  olur.   ( Burada i ve j dizinin ilk iki elemanı olduğu için 1 ve 2 değerini aldı. )

for döngüsünün içindeki while döngüsüne girince karşılaştırma başlar. A[1]>key olduğu için (5>2),  A[i] ile A[i+1] yer değiştirir. Yani başlangıç kısmını düzelterek yazarsak,

A[ ]={2,5,4,6,1} olur dizinin yeni hali.

Hemen ardından,

j=3  ,  key=4  , i=2 olur.  ( Bu kısım for döngüsünün hemen altındaki while döngüsüne girmeden önce hallediliyor. )

While döngüsünde A[2] ile key karşılaştırılıyor. A[2] daha büyük olduğu için key ile (yani  A[3] ile) A[2] yer değiştirir.

Dizinin yeni hali:

A[ ] ={2,4,5,6,1] olur.

j=4  ,  key=6  , i=3 olduğunda bir değişiklik olmayacağı açıktır. (5<6 olduğu için) Dizi aynen kalır.

j=5  ,  key=1 ,  i=4   olduğunda   A[4]=6 > 1 olduğu için yer değiştirirler.

Dizinin yeni hali:


A[ ] = {2,4,5,1,6} olur. while içinde  i bir azalıyordu. O zaman i=3 olur. Key de A[4] (yani 1)  olur. while döngüsündeki şart yeniden sağlandığı için ( A[3] >  A[4] ) tekrar yer değiştirilir. Key yine 1'dir. Burada 1 en başa gelinceye kadar yer değiştirme olur. Key hep 1 olacak i de bir azalacak. Ne zaman ki while döngüsündeki şart sağlanmıyorsa o zaman bu işlem duracak. 


Döngü sonlandığında, dizinin yeni hali: A[ ] ={1,2,4,5,6} 'dir. Zaten son elemana gelindiği için for döngüsünden de çıkılır ve dizi sıralanmış olur.


____________________________________________________

En kötü durum (Worst Case) analizi :


A [i] ' yi sıralarken maksimum karşılaştırma sayısı  (i-1)'dir. Dolayısı ile karşılaştırma sayısı toplam işlem zamanını vereceğinden,



Twc(n) £  å i = 2 to n  (i -1)
              £ å j = 1 to n-1   (j) 
              = n(n-1)/2
              = Q(n2)


Buradan T(n) = Q(n2) çıkar. 


______________________________________________________

En iyi durumda zaten sıralı geleceğinden en iyi durum analizi tahmin edilebileceği gibi  T(n) = Q (n) 'dir.