BİLGİSAYAR PROGRAMLAMA Araş. Gör. Ahmet ARDAHANLI Kafkas Üniversitesi Mühendislik Fakültesi
Bu hafta? İki değişken değerinin yer değiştirilmesi (swapping) selection sort sıralama algoritması bubble sort sıralama algoritması Kullanıcı tanımlı fonksiyonlar
İki değişken değerinin yer değiştirilmesi (swapping) deal komutuyla yapılabilir.
İki değişken değerinin yer değiştirilmesi (swapping) Veya geçici değişken tanımlayarak yapılabilir.
İki değişken değerinin yer değiştirilmesi (swapping) veya a([1 5])=a([5 1])
Selection sort Önce dizideki en küçük eleman bulunur ve dizinin ilk elemanı ile yer değiştirilir. Sonraki aşamada sıralanmamış parça içindeki en küçük eleman bulunur ve ikinci elemanla yer değiştirilir. Bu işlemi N defa N eleman için yaptığımızda dizi sıralanmış olacaktır 2. Mantık: Uygulanan her adımda eldeki dizinin en küçük elemanı bulunuyor ve en başa atılıyor. Bu işlem her seferinde tekrarlanıyor. Dizinin sonuna gelindiğinde dizimiz küçükten büyüğe sıralanmış oluyor.
Selection sort
Bubble sort sayılarından oluşan bir kümemiz olsun. Kabarcık algoritması şu şekilde işleyecektir. İlk olarak 23 sayısı 11 ile karşılaştırılır. 23 > 11 olduğundan swap uygulanır ve yeni görünüm olacaktır. Akabinde aynı işlemler devam eder. 23 > 9 olduğundan bir yer değiştirme işlemi daha olur Devamında, 23 < 44 olduğundan 23 sayısı olduğu yerde kalır ve elemanlarda yer değişikliği olmaz Daha sonra sıra 44 dedir. 44 > 10 olduğundan tekrar değişiklik olacaktır ve ilk tarama bakım sonrasında elemanlarımızın görünüm değerleri şu şekilde olur Görüldüğü üzere en büyük eleman listemizde en sona ulaşmış oldu ! Algoritmanın çalışması gereği işlem tekrardan ilk elemana döner. Yani 11 ile işlem tekrar başlatılır. Aynı mantıkla 11 > 9 olduğu için takas gerçekleşecektir Daha sonra olduğu için tekrar transfer gerçekleşir Bu süzgeçleme adımının son kısmında (23 < 44) durumundan dolayı Swap gerçekleşmez. İşlem tekrar 9 dan itibaren tekrar başlayacaktır. Yukarıda anlatılan aynı mantıkla işlemler gerçekleşecek ve algoritmanın son durumunda görünüm tahmin edebileceğiniz gibi, olacaktır.
Bubble sort Örnek 1: adım (34>26) 2. adım (34>10) 3. adım (34>1) 4. adım (34>-4) //Bu adımdan sonra en büyük eleman sona ulaşır. 5. adım (26>10) //tekrar başa dönüldü ve yer değiştirdi. 6. adım (26>1) 7. adım (26>-4) 8. adım (26<34) // değişme olmayacaktır. 9. adım (10>1) //başa dönüldü ve 1-10 yer değiştirdi. 10. adım (10<26) // değişme olmayacaktır. 11. adım (26<34) // değişme olmayacaktır. 12. adım (-4<1) //başa dönüldü ve 1 ve -4 yer değiştirdi.
Bubble sort Örnek 1: adım (1<10) // değişme olmayacaktır. 14. adım (10<26) // değişme olmayacaktır. 15. adım (26<34) // değişme olmayacaktır. Bubble sort algoritmasıda selection sort algoritması gibi daha karmaşık elemanlı dizilerde veya başka veri yapılarında kullanışlı değildir.
Bubble sort Örnek 2: 9, 5, 8, 3, 1. rakamlarının azalan şekilde sıralanmasını kabarcık algoritmasıyla gerçekleştirelim. 1. tur 1. tur tamamlandığında en büyük eleman olan 9 en sona yerleşmiş olur ve bir daha karşılaştırmaya gerek yoktur.
Bubble sort 2. tur 3. tur 4.tur
Bubble sort
Kullanıcı tanımlı fonksiyonlar Matlab’da hazır tanımlı çok sayıda fonksiyon mevcuttur; sin, sqrt, sum vs.. Şayet çeşitli Matlab komutlarını sıklıkla kullanıyorsanız, bu komutları bir fonksiyon haline getirebilirsiniz. Bu fonksiyonlar Matlab’da tanımlı fonksiyonlar gibi çalıştırılabilir.
Kullanıcı tanımlı fonksiyonlar Yazım metodu: function [out1, out2,...] = funname(in1, in2,...) funname isimli bir fonksiyon oluşturur. in1, in2 gibi giriş ifadelerini alır ve out1, out2 gibi çıkış ifadelerini üretir. Kullanıcı tanımlı fonksiyon üretmek için: 1.İlk satır aşağıdaki gibi olmalıdır: function [output variables] = function_name(input variables); 2.m-dosyası’nın adı, " function_name " ile aynı olmak zorundadır; 3.kullanıcı tanımlı fonksiyonlar, m-dosyasının adıyla çağrılırlar.
Kullanıcı tanımlı fonksiyonlar Örnek 1: Serbest düşen bir cismin son hızını hesaplayan bir Matlab fonksiyonunu yazınız. m_file (ana program) fonksiyon dosyası (sonhiz.m) (alt program)
Kullanıcı tanımlı fonksiyonlar Örnek 2: Bir dairenin alan ve çevresini hesaplayan bir Matlab fonksiyonu yazınız. m_file (ana program) fonksiyon dosyası (daire.m) (alt program)
Kullanıcı tanımlı fonksiyonlar Örnek 3: İki nokta arası mesafeyi hesaplayan bir fonksiyon yazınız. x1= birinci noktanın x koordinatı; x2= ikinci noktanın x koordinatı y1= birinci noktanın y koordinatı; y2= ikinci noktanın y koordinatı m_file (ana program) fonksiyon dosyası (mesafe.m) (alt program)
Kullanıcı tanımlı fonksiyonlar