ESKİŞEHİR OSMANGAZİ ÜNİVERSİTESİ

Benzer belgeler
ESKİŞEHİR OSMANGAZİ ÜNİVERSİTESİ

ESKİŞEHİR OSMANGAZİ ÜNİVERSİTESİ

ESKİŞEHİR OSMANGAZİ ÜNİVERSİTESİ

Alıştırma 1: Yineleme

SAB104 Bilgisayar Programlama

Karakter Değişkenlere İlişkin Komutlar

Java, Python ve Ruby Dillerinin Performans Karşılaştırması

Yrd. Doç. Dr. Ümit ATİLA

HACETTEPE ÜNİVERSİTESİ BAHAR DÖNEMİ

Algoritmalar. Doğrusal Zamanda Sıralama. Bahar 2017 Doç. Dr. Suat Özdemir 1

ESKİŞEHİR OSMANGAZİ ÜNİVERSİTESİ

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-7 Sıralama Algoritmaları

SIRALAMA SORTING. Yrd. Doç. Dr. Aybars UĞUR

Önsöz. İçindekiler Algoritma Algoritma Nasıl Hazırlanır? Yazılımda Algoritma Mantığı Nedir? 1.2. Algoritma Örnekleri ve Sorular

Her Select Case bloğu, mutlaka End Select ile bitmek zorundadır.

UYGULAMALAR -2 Select case Yapısı: Select Case case case case case case is case Else End Select Örnek:

Bilgisayar programlamanın üç temel mantık yapısından biridir. Diğer ikisi ise Seçilim(Selection) ve Döngü(Loop, Iteration)dür.

Visual Basic Uygulamaları-4. Dİ Zİ LER (ARRAYS) ve Nesne Kü meleri

Genel Kullanılış 1: [değişken ismi] = [değişken ismi] [işlem] [sayı veya string ifade veya değişken]

Diziler. Yukarıdaki bilgileri bilgisayar belleğinde saklamak için aşağıdaki gibi değişkenler tanımlanır ve değerler bu değişkenlere aktarılır :

F(A, N, K) // A dizi; N, K integer if N<0 then return K; if A[N]>K then K = A[N]; return F(A, N-1, K);

YZM ALGORİTMA ANALİZİ VE TASARIM DERS#1: ALGORİTMA KAVRAMI

AOSB 2017 EĞİTİM PROGRAMI

5. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ.

VERİ TABANI YÖNETİM SİSTEMLERİ II 8. RAPORLAR VE ACCESS PROGRAMINDA RAPOR OLUŞTURMA

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

=~ Metodu 92 Karakter Sınıfları 94 sub ve gsub metotları 101 Hızlı Tekrar 102 Kontrol Noktası 103 Düello 106 Sonraki Bölümde 109

Algoritmalar. Arama Problemi ve Analizi. Bahar 2016 Doç. Dr. Suat Özdemir 1

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

Veri Yapıları. for(i=1;i<n;i++) { ekle=d[i]; for (k=i 1; k>=0 && ekle<=d[k] ;k ) D[k+1]=D[k]; /* Geriye kaydırılıyor*/

elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz.

Visual Basic 6.0. Anadolu Üniversitesi Endüstri Mühendisliği Bölümü. Değişkenler ve Veri tipleri. Ders Notları

2. (x 1 + x 2 + x 3 + x 4 + x 5 ) 10 ifadesinin açılımında kaç terim vardır?

BİLGİSAYAR PROGRAMLAMA Araş. Gör. Ahmet ARDAHANLI. Kafkas Üniversitesi Mühendislik Fakültesi

Algoritmalar. Sıralama Problemi ve Analizi. Bahar 2017 Doç. Dr. Suat Özdemir 1

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

SQL PROGRAMLAMA. Bir batch, bir arada bulunan bir dizi SQL deyimidir. Batch ayıracı GO deyimidir.

Access e Nasıl Ulaşılır. Araç çubuklarını yeniden düzenlemek için Görünüm komutunun Araç çubukları seçeneği kullanılır.

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

YZM 2116 Veri Yapıları

OMÜ HAVACILIK VE UZAY BİLİMLERİ FAKÜLTESİ METEOROLOJİ MÜHENDİSLİĞİ BÖLÜMÜ MET103 BİLGİSAYAR PROGRAMLAMA I BÜTÜNLEME SINAVI

VERİ YAPILARI LİSTELER. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ

Diziler & Karakter Katarı (String)

Problem. N sayıda öğrencinin boy ortalaması. N: Öğrenci sayısı S: Başlangıç değeri TOP: Toplam BOY: Boy ORT: Ortalama. Algoritma

Adım Adım SPSS. 1- Data Girişi ve Düzenlemesi 2- Hızlı Menü. Y. Doç. Dr. İbrahim Turan Nisan 2011

İNTERNET PROGRAMCILIĞI DERSİ ÇALIŞMA SORULARI

BÖLÜM RAPORLAR. Şekil 5.1. Rapor sihirbazı ile rapor oluşturma 1. pencere.

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

BÖLÜM13 3- EXCEL DE VERİ İŞLEMLERİ

ORACLE DA KÜRSÖRLER. Gerekli sistem değişkenleri

Veri Yapıları ve Algoritmalar

PASCAL PROGRAMLAMA DİLİ YAPISI

SIRALAMA SORTING. Doç. Dr. Aybars UĞUR

How to ASP Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU. 29 Eki. 1 Kas. 2013

Görsel Programlama 1

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

Sınav Dağılım & IMKB Endeks

program uc_hata implicit none integer : x(5),i

İnternet Programcılığı Dersi 2.Dönem Ders Notu

GÜZ YY. - MKT103 - GÖRSEL PROGRAMLAMA DERSİ - ARA SINAVI

PROGRAMLAMA TEMELLERİ

YZM 2116 Veri Yapıları

Quick-Basic Kursu Quick BASIC Kursu

DİZİLER. Bu ünitede yapılan örnekler Visual Studio 2010 programındaki Visual Basic programlama diliyle çözülmüştür.

VERİ YAPILARI DERS NOTLARI BÖLÜM 1 GİRİŞ. Yard. Doç. Dr. Deniz KILINÇ

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

How to ASP Language. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU. Hafta V

4- Turbo Pascal Bilgisayar Programlamada Kullanılan Şart Yapıları

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 5. Bölüm Karar ve Çevrim Kontrol Yapıları

MatLab. Mustafa Coşar

Internet Programming I. Hafta III. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

Algoritma ve Akış Diyagramları

Olimpiyat Soruları. sonuçları tekrar fonksiyonda yerine koyup çıkan tüm sonuçları toplayan program (iterasyon sayısı girilecek)

Uygulamalar 4 IsMissing Fonksiyonlar ve Alt Programlar Prosedür Parametreleri Public Function f(x,y,optional t, Optional k) End Function 1.

BİL 810 İnşaat Mühendisliğinde Bilgisayar Uygulamaları

INPUTBOX() ile Veri Girişi

-A Grubu- MKT103 Görsel Programlama 2015/2016 Güz Dönemi Final Sınavı

ALGORİTMA ANALİZİ. Cumhuriyet Üniversitesi Bilgisayar Mühendisliği Bölümü

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Yukardaki gibi sonsuz döngülü programlara Ctrl+Break tuş takımı ile müdahale edilmesi gerekir, aksi halde program sonsuz döngüye girer.

TESİ. indeks. söylenebilir?? bir ilişkidir d) Hiçbiri. veya somutlaştırılmış. düzeyidir? sağlayabilir? sına. d) Hepsi. olabilir? c) Verilerin d) Hepsi

İÇİNDEKİLER BİRİNCİ BÖLÜM BİLGİSAYARDA BELGE AÇMAK VE TEMEL İŞLEMLER YAPMAK

YZM 2105 Nesneye Yönelik Programlama

VERİ TABANI YÖNETİM SİSTEMLERİ I

SAYI VE KODLAMA SİSTEMLERİ. Teknoloji Fakültesi/Bilgisayar Mühendisliği

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi

Uygulama 1) Aşağıdaki genel (global) değişken tanımlamalarını VB üzerinde yapınız. Süre 10 dak.

KONTROL YAPILARI (CONTROL STRUCTURES)

Veritabanı. SQL (Structured Query Language)

Uygulama 1) Tur sayısını 1 den klavyeden girilen n e kadar ekrana yazarak birikimli (kümülatif) toplam alan kaynak kodları yazınız.

disp VEYA fprintf KOMUTLARIYLA EKRANA MESAJ YAZDIRMA

DOKUZ EYLÜL ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ DEKANLIĞI DERS/MODÜL/BLOK TANITIM FORMU. Dersin Kodu: BİL 1007

Def bildiri deyimi projenin general,declarations bölümünde tanımlanmalıdır

b) Algoritmanızın en kötü durumda işlem zamanını asimptotik olarak bulunuz

Bu gün dersimizde değişik web kontrollerinin kullanımını gösteren birkaç web sitesi hazırlayacağız. Önce Visual Studio 2005 i açalım.

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

Transkript:

ESKİŞEHİR OSMANGAZİ ÜNİVERSİTESİ Mühendislik Mimarlık Fakültesi İnşaat Mühendisliği Bölümü E-Posta: ogu.ahmet.topcu@gmail.com Web: http://mmf.ogu.edu.tr/atopcu Bilgisayar Destekli Nümerik Analiz Ders notları 0 Ahmet TOPÇU.7.09 a = Sayısal sıralama. 0.97. 0.97 a =.09.7 İlhan Zeynep a = Çağla Türkçe metin sıralama Şirin Işık Çağla Işık a = İlhan Şirin Zeynep PROGRAMLAR: Sıralama (Sorting)metotları Bubble sıralama Insertion sıralama Shell sıralama Quick sıralama Gnome sıralama

. PROGRAMLAR: Sıralama (sorting) metotları 70. PROGRAMLAR: Sıralama (sorting) metotları Sayısal sıralama: Bubble, Insertion, Heap, Shell, Quick ve Gnome sıralama metotlarının test sonuçları ve programları aşağıda verilmiştir. Bu metotların hepsi de hemen aynı miktarda bellek kullanmaktadır. Gerçek sayılardan oluşan n elemanlı a(n) vektörü kullanılarak her metodun hızı belirlenmiştir. a(n) vektörünün yapısına bağlı olarak sıralama yöntemleri çok değişik davranış göstermektedir. Tek bir vektör ile karşılaştırma yapmak yanlış sonuca götürür. Bu nedenle üç farklı yapıda a(n) vektörü seçilmiştir. Aynı tip bir vektör küçükten-büyüğe tüm sıralama metotları ile ayrı ayrı sıralanarak her metodun hızı belirlenmiştir. Test için kullanılan a(n) vektörleri aşağıdaki gibi seçilmiştir: t tipi: a(n)=[n, n-,,, ] tamamen ters sıralı n tane ondalık sayı içeren vektör. h tipi: a(n)=[,,, n-, n, ] hemen hemen sıralı n tane ondalık sayı içeren vektör(sadece sayısı doğru yerinde değil). r tipi: a(n)=[ rasgele sayılar ] n tane rasgele ondalık sayı içeren sırasız vektör. Eleman sayısı n=00, 00,,000 alınarak a(n) vektörü kurulmuş ve 000 kez sıralanmıştır. Aynı vektörün 000 kez sıralanmasının amacı, ölçülebilir bir zaman elde etmeye yöneliktir. Test sonuçlarının n-zaman(saniye) grafikleri izleyen sayfalarda verilmiştir. Programlarda a(n) vektörü değişkeni tek hassasiyetli(single) tanımlanmıştır. İstenirse Çift hassasiyetli veya başka bir tip olarak (DOUBLE, INTEGER, ) tanımlanabilir. Ayrıca sıralanacak a(n) vektörünün tamamının bellekte olduğu varsayılmıştır. Alfasayısal sıralama: ÇçIıİiĞğOoÖöUuÜuŞş gibi Türkçeye özgü karakterlerin kod tablolarında mantıklı bir sıra izlememesi nedeniyle Türkçe metinlerin sıralanması özel kod ve program gerektirir. Örnek olması açısından, Quick sıralama yöntemi kullanılarak yazılmış bir program verilmiştir. Bu programda sadece AaBbCcÇçDdEeFfGgĞğHhIıİiJjKkLlMmNnOoÖöPpQqRrSsŞşTtUuÜüVvWwXxYyZz079 karakterleri dikkate alındığından, bunlar dışında (örneğin Â, α, ä, $, {, @, gibi) karakterler içeren metinler doğru sıralanamayacaktır. Ancak; listede olmayan karakterler eklenerek program geliştirilebilir. Not: Uygulamada genellikle. a(n) vektörü ana bellekte değil, bir çevre depolama biriminde (hard disk, flash bellek) üzerindedir.. Bir vektör sıralanınca o vektöre bağlı birçok bilginin de beraber taşınması gerekir. Örneğin vatandaşlık numarasına göre kişiler sıralanacaksa, kişilerin adı, soyadı, v.s. gibi bilgilerinin de beraber taşınması veya bu bilgilerin adresinin de taşınması zorunludur. Açıkçası sıralama problemi gerçekte daha karmaşıktır. Burada verilen alt programlar temel alınarak amaca cevap verecek şekilde iyileştirilebilirler. Ahmet TOPÇU, Bilgisayar Destekli Nümerik Analiz, Eskişehir Osmangazi Üniversitesi, 0, http://mmf.ogu.edu.tr/atopcu/ 70

. PROGRAMLAR: Sıralama (sorting) metotları 7 Karşılaştırma t tipi: a=[n, n-,,, ] tamamen ters sıralı sayısal vektör için: 0 00 0 00 0 Bubble sıralama 0 Insertion sıralama 00 00 0 0 7 7 Heap sıralama Shell sıralama 7 0 00 Quick sıralama 0 00 Gnome sıralama 0 Tamamen ters sıralı vektör için Gnome en yavaş, Quick en hızlı sıralamadır. Ahmet TOPÇU, Bilgisayar Destekli Nümerik Analiz, Eskişehir Osmangazi Üniversitesi, 0, http://mmf.ogu.edu.tr/atopcu/ 7

. PROGRAMLAR: Sıralama (sorting) metotları 7 h tipi: a=[,,, n-, n, ] hemen hemen sıralı sayısal vektör için: 0 0 0 Bubble sıralama Insertion sıralama 0 0 0 Heap sıralama Shell sıralama Quick sıralama Gnome sıralama Hemen hemen sıralı vektör için Bubble en yavaş, Insertion ve Gnome en hızlı sıralamadır. Ahmet TOPÇU, Bilgisayar Destekli Nümerik Analiz, Eskişehir Osmangazi Üniversitesi, 0, http://mmf.ogu.edu.tr/atopcu/ 7

. PROGRAMLAR: Sıralama (sorting) metotları 7 r tipi: a=[ rasgele sayılar ] rasgele sayılardan oluşan sırasız vektör için: 0 0 00 00 0 0 Bubble sıralama 0 0 Insertion sıralama 0 0 0 0 0 0 Heap sıralama Shell sıralama 0 0 00 0 Quick sıralama 0 Gnome sıralama 0 0 Rasgele sayılardan oluşan sırasız bir vektör için Gnome en yavaş, Quick en hızlı sıralamadır. SONUÇ: En iyi sıralama metodu hangisidir?. Sıralanacak vektör hemen hemen sıralı ise: Uygulamada çoğu kez vektör sıralıdır ve zaman zaman yeni bir eleman eklenmesi ve yeniden sıralanması gerekir. Bu durumda en hızlı sıralama metodu Insertion veya Gnome sıralamadır, Insertion öncelikle tercih edilir.. Diğer her tip vektör için: Quick sıralama. Ahmet TOPÇU, Bilgisayar Destekli Nümerik Analiz, Eskişehir Osmangazi Üniversitesi, 0, http://mmf.ogu.edu.tr/atopcu/ 7

. PROGRAMLAR: Sıralama (sorting) metotları 7 '-----------------Sıralama(Sorting) test---------------------- ' Ahmet TOPÇU, Anadolu Üniversitesi, Eskişehir,9 ' Eskişehir Osmangazi Üniversitesi, 00 Sıralama ana programı ' Sayısal vektörlerin sıralama yöntemleri: ' Bubble Sort, Insertion Sort, Heap Sort, Shell Sort ' QuickSort, GnomeSort ' a(n):sıralanacak vektör ' b(n):yardımcı vektör(sadece test için gerekli) ' n:vektörün eleman sayısı -------------------- DEFINT I-N DEFSNG A-H, O-Z DECLARE SUB BubbleSort (n, a()) DECLARE SUB insertionsort (n, a()) DECLARE SUB HeapSort (n, a()) DECLARE SUB ShellSort (n, a()) DECLARE SUB QuickSort (n, a()) DECLARE SUB GnomeSort (n, a()) DECLARE SUB VektorKur (n, b(), ihata) DECLARE SUB Checkit (n, a()) DATA A Vektörünü kur,bubble,insertion,heap,shell,quick,gnome,son n = 00 ' a vektörünün eleman sayısı. test için n<=0000) DIM s$(7), a(n), b(n) Kuruldu = 0 FOR i = 0 TO 7 READ s$(i) 00 CLS FOR i = 0 TO 7 PRINT i; s$(i) IF Kuruldu = 0 THEN PRINT "Vektör kurulu değil!" ' kurulan b yi a ya kopyala a(i) = b(i): PRINT a(i); PRINT : PRINT PRINT "n="; n; " Elemanlı vektör kurulu:" PRINT INPUT "Seçenek="; isecenek IF isecenek = 7 THEN END IF isecenek <> 0 AND Kuruldu = 0 THEN PRINT "önce vektörü kurunuz!" PRINT INPUT "Enter tuşuna basınız"; z$ GOTO 00 t = TIMER SELECT CASE isecenek CASE 0 CALL VektorKur(n, b(), ihata) IF ihata <> 0 THEN GOTO 00 ' kurulan b yi a ya kopyala a(i) = b(i) Kuruldu = CASE CALL BubbleSort(n, a()) CASE CALL insertionsort(n, a()) CASE CALL HeapSort(n, a()) CASE CALL ShellSort(n, a()) CASE CALL QuickSort(n, a()) CASE CALL GnomeSort(n, a()) CASE 7 END CASE GOTO 00 END SELECT Sıralama ana programının devamı sonraki sayfada SUB VektorKur (n, b(), ihata) ------ ' n elemanlı b(n) vektörünü sayılar ile doldurur ' t:ters sıralı sayılardan oluşan vektöru kur ' h:hemen hemen sıralı sayılardan oluşan vektörü kur ' r:rasgele sayılardan oluşan vektörü kur ' bu alt program sadece test için gereklidir. ------ ' b vektörünün kurulması ihata = 0 PRINT n; " elemanlı vektör kurulacak, vektör tipini seçin:" INPUT "Vektörün tipi(t,h,r)="; Tip$ ' Hemen hemen sıralı IF Tip$ = "h" THEN - b(i) = i + b(n) = EXIT SUB ' Tamamen ters sıralı IF Tip$ = "t" THEN b(i) = n - i + EXIT SUB ' rasgele IF Tip$ = "r" THEN b(i) = RND() ihata = PRINT "Yanlış veri=": INPUT "Enter tuşuna basınız"; z$ END SUB 'VektorKur sonu VektorKur alt programı Ahmet TOPÇU, Bilgisayar Destekli Nümerik Analiz, Eskişehir Osmangazi Üniversitesi, 0, http://mmf.ogu.edu.tr/atopcu/ 7

. PROGRAMLAR: Sıralama (sorting) metotları 7 Sure = TIMER - t PRINT : PRINT s$(isecenek); " n="; n; : PRINT ' sıralama doğru mu? Kontrol et IF isecenek <> 0 THEN CALL Checkit(n, a()) ' a yı yazdır PRINT a(i); Sıralama ana programının devamı PRINT : PRINT : PRINT s$(isecenek); " n="; n; "Süre="; Sure; "" INPUT "Enter tuşuna basınız"; z$ GOTO 00 END ' sıralama Test sonu SUB BubbleSort (n, a()) ' Bubble sıralama yöntemi ile küçükten - k = i c = a(k) FOR j = i + TO n IF a(j) < c THEN k = j c = a(k) NEXT j b = a(i) a(i) = c a(k) = b END SUB ' BubbleSort sonu SUB insertionsort (n, a()) ' Insertion sıralama yöntemi ile küçükten FOR j = TO n i = j b = a(j) 0 i = i - IF a(i) > b THEN a(i + ) = a(i) IF i > 0 GOTO 0 a(i + ) = b NEXT j END SUB ' BubbleSort alt programı insertsort alt programı SUB ShellSort (n, a()) ' Shell sıralama yöntemi ile küçükten L = ^ INT(LOG(n) / LOG()) - WHILE L > L = INT(L / ) FOR j = TO L FOR k = j + L TO n STEP L i = k b = a(i) DO IF a(i - L) <= b THEN EXIT DO a(i) = a(i - L) i = i - L LOOP WHILE i > L a(i) = b NEXT k NEXT j END SUB 'ShellSort sonu ShellSort alt programı SUB GnomeSort (n, a()) ' Genome sıralama yöntemi ile küçükten i = j = WHILE i <= n IF a(i - ) <= a(i) THEN i = j j = j + SWAP a(i - ), a(i) i = i - IF i = THEN i = j j = j + EXIT SUB END SUB ' GnomeSort sonu GnomeSort alt programı Ahmet TOPÇU, Bilgisayar Destekli Nümerik Analiz, Eskişehir Osmangazi Üniversitesi, 0, http://mmf.ogu.edu.tr/atopcu/ 7

. PROGRAMLAR: Sıralama (sorting) metotları 7 SUB HeapSort (n, a()) ' Heap sıralama yöntemi ile küçükten HeapSort alt programı L = n / + m = n IF L > THEN L = L - b = a(l) b = a(m) a(m) = a() m = m - IF m = THEN a() = b EXIT SUB i = L j = L + L IF j <= m THEN IF j < m THEN IF a(j) < a(j + ) THEN j = j + IF b < a(j) THEN a(i) = a(j) i = j j = j + j j = m + GOTO a(i) = b GOTO END SUB 'HeapSort sonu SUB QuickSort (n, a()) ' Quick sıralama yöntemi ile küçükten DIM L(0), ir(0) is = L() = ir() = n WHILE is > 0 L = L(iS) ir = ir(is) is = is - WHILE L < ir il = L ir = ir b = a(int((l + ir) / )) WHILE il <= ir WHILE a(il) < b il = il + WHILE b < a(ir) ir = ir - IF il <= ir THEN SWAP a(il), a(ir) il = il + ir = ir - IF il < ir THEN is = is + L(iS) = il ir(is) = ir ir = ir END SUB 'QuickSort sonu QuickSort alt programı Checkit alt programı SUB Checkit (n, a()) ------- ' sıralamanın doğru olup olmadığını kontrol eder. ' bu alt program sadece test için gereklidir ------- - IF a(i) > a(i + ) THEN PRINT : PRINT "Sıralama hatalı!": INPUT "Enter tuşuna basınız!"; z$ EXIT SUB END SUB ' Check it sonu Ahmet TOPÇU, Bilgisayar Destekli Nümerik Analiz, Eskişehir Osmangazi Üniversitesi, 0, http://mmf.ogu.edu.tr/atopcu/ 7

. PROGRAMLAR: Sıralama (sorting) metotları 77 '------------------Ana program QuickAlfa test------------------- ' Ahmet TOPÇU, Anadolu Üniversitesi, 9 ' Satırları Türkçe harf dizini içeren a$(n) vektörü ' Quick sıralama yöntemi ile A dan Z ye alfabetik sıralanır ' n: vektörün satır sayısı ' iesas: Sıralamaya esas alınacak karakter sayısı ' iesas=0: dizinin tüm karakterlerini dikkate al ve sırala ' iesas= Dizinin sadece ilk karakterini dikkate al ve sırala ' iesas= Dizinin sadece ilk üç karakterini dikkate al ve sırala ----------------------- QuickAlfa ana programı DATA 0 : ' n nin değeri DATA 0 : ' iesas değeri(satırdaki tüm karakterleri dikkate al) ' A$ ın satır verileri DATA İbrahim,Şükrü,Ünal,Defne TOPÇU,Şener ZOR DATA Şebnem AY,Çetin ÇINAR,Ömer BAĞ,Ali ÇAKIR,Sema DATA Uğur,Oğuz,Şengül,Çakır-,Ümit Kara DATA İlker,Emre TAÇ,Şirin,Adnan,Betül YAŞ DATA Filiz,Cem,Gülşen,Havva TOPÇU,Çakır- DATA Ziya,Yusuf TOPÇU,Işık,Tamer,Yelda DATA Çağrı Şen,Çağatay,Çelen,Özer,Kemal ER DATA Timur,Özcan,İnci,Irmak,Şebnem TAŞ Buradaki Türkçe karakterler program Windows ortamına taşındığında düzgün görüntülenmez, taşındıktan sonra düzeltilmelidir DEFINT I-N DECLARE SUB QuickSortAlfa (n, a$()) DECLARE SUB TurkceKodaDondur (n, a$(), iesas, TurkceKod$) DECLARE SUB TurkceKodTablosu (TR$, TurkceKod$) DECLARE SUB TurkceKaraktereDondur (n, a$(), iesas, TR$) CLS READ n ' a$ ın satır sayısı DIM a$(n) ' a$ için yer ayır READ iesas ' sıralamaya esas alınacak karakter sayısı READ a$(i) PRINT "Sıralanmamış vektör (QuickAlfa):" PRINT a$(i) PRINT INPUT "Enter tuşuna basınız"; b$ CALL TurkceKodTablosu(TR$, TurkceKod$) CALL TurkceKodaDondur(n, a$(), iesas, TurkceKod$) CALL QuickSortAlfa(n, a$()) CALL TurkceKaraktereDondur(n, a$(), iesas, TR$) CLS PRINT "Sıralanmış vektör (QuickAlfa):" PRINT a$(i) END ' Quick Alfa Test sonu SUB TurkceKodTablosu (TR$, TurkceKod$) -------- ' Türkçe karakter tablosu ve kodlarını hazırlar -------- ' Türkçe harfler ve rakamlar: TR$ = "AaBbCcÇçDdEeFfGgĞğHhIıİiJjKkLlMmNnOoÖöPpQqRrSsŞşTtUuÜüVvWwXxYyZz" TR$ = TR$ + "079" TR$ = TR$ + SPACE$( - LEN(TR$)) ' TR$ içindeki her karaktere,,,.. kodlarını ata TurkceKod$ = SPACE$() 'TurkceKod->türkçe karşılığı vektörü FOR i = TO k = ASC(MID$(TR$, i, )) MID$(TurkceKod$, k, ) = CHR$(i) TurkceKodTablosu alt programı Buradaki Türkçe karakterler program Windows ortamına taşındığında düzgün görüntülenmez, taşındıktan sonra düzeltilmelidir END SUB 'TurkceKodTablosu sonu Ahmet TOPÇU, Bilgisayar Destekli Nümerik Analiz, Eskişehir Osmangazi Üniversitesi, 0, http://mmf.ogu.edu.tr/atopcu/ 77

. PROGRAMLAR: Sıralama (sorting) metotları 7 SUB TurkceKaraktereDondur (n, a$(), iesas, TR$) ----- ' a$(n) ın her satırının ilk iesas karakterini ' Türkçe karaktere geri döndürür ----- L = iesas L = LEN(a$(i)) IF iesas >= AND iesas < L THEN L = iesasa L = L FOR j = TO L k = ASC(MID$(a$(i), j, )) MID$(a$(i), j, ) = MID$(TR$, k, ) NEXT j END SUB ' TurkceKaraktereDondur sonu SUB TurkceKodaDondur (n, a$(), iesas, TurkceKod$) ----------------------- ' A$(n) ın her satırının ilk iesas karakterinin ' kodunu program koduna çevirir ' iesas: Sıralamaya esas alınacak karakter sayısı ' iesas=0: dizinin tüm karakterlerini dikkate al ve sırala ' iesas= Dizinin sadece ilk karakterini dikkate al ve sırala ' iesas= Dizinin sadece ilk üç karakterini dikkate al ve sırala ----------------------- L = iesas L = LEN(a$(i)) IF iesas >= AND iesas < L THEN L = iesasa L = L FOR j = TO L k = ASC(MID$(a$(i), j, )) MID$(a$(i), j, ) = MID$(TurkceKod$, k, ) NEXT j END SUB ' TurkceKodaDondur sonu TurkceKaraktereDondur TurkceKodaDondur Alt programları SUB QuickSortAlfa (n, a$()) ----------------- ' Ahmet TOPÇU, Anadolu Üniversitesi, 9 ' Satırları Türkçe harf dizini içeren a$(n) vektörü ' Quick sıralama yöntemi ile A dan Z ye alfabetik sıralanır ' n: vektörün satır sayısı ----------------- DIM L(0), ir(0) ' index-index arasını sırala index = index = n IF index < OR index > index THEN EXIT SUB IF index < index OR index > n THEN EXIT SUB index = L() = ir() = index WHILE index > 0 L = L(index) ir = ir(index) index = index - WHILE L < ir il = L ir = ir b$ = a$(int((l + ir) / )) QuickAlfa alt programı WHILE il <= ir WHILE a$(il) < b$ il = il + WHILE b$ < a$(ir) ir = ir - IF il <= ir THEN SWAP a$(il), a$(ir) il = il + ir = ir - IF il < ir THEN index = index + L(index) = il ir(index) = ir ir = ir END SUB ' QuickAlfa sonu Ahmet TOPÇU, Bilgisayar Destekli Nümerik Analiz, Eskişehir Osmangazi Üniversitesi, 0, http://mmf.ogu.edu.tr/atopcu/ 7