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

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

SIRALAMA ALGORİTMALARI

SIRALAMA ALGORİTMALARI

KUYRUKLAR QUEUES. Doç. Dr. Aybars UĞUR

YZM 2116 Veri Yapıları

Alıştırma 1: Yineleme

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

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

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

BAĞLAÇLI LİSTELER LINKED LISTS

YMT219 VERİ YAPILARI ÖDEV-1

JAVADA DİZİ İŞLEMLERİ

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

BAĞLAÇLI LİSTELER LINKED LISTS

D İ Z İ L E R A R R A Y S

1. Her marka için 3 aylık satış toplamı nedir? (Tablodaki satır toplamları)

KUYRUKLAR. Doç. Dr. Aybars UĞUR

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);

Insertion Sort. (Sokuşturma Sıralaması)

İST 264 VERİ YAPILARI Bitirme Sınavı A Grubu

YZM 2116 Veri Yapıları

I Java Veri Yapıları 1

Interface Comparator. Kılgılayan sınıf: Collator. Bildirimi: public interface Comparator

Veri Yapıları ve Algoritmalar dönem

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

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

Arasınav Örnek Soruları Bahar 2018

Dizi türündeki referanslar, dizi nesnelerine bağlanmaktadır. Dizi referansları tanımlamak bu dizinin hemen kullanılacağı anlamına gelmez...

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

VERİ YAPILARI DATA STRUCTURE GİRİŞ

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

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

Arasınav Soruları Bahar 2018

Quick Sort Algoritması (Hızlı Sıralama Algoritması)

Merge Sort Bireşen Sıralama

YZM 2116 Veri Yapıları

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

Java ile Nesneye Yönelik Programlama (Object Oriented Programming)

Bölüm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

Programlama Dilleri 3

Class PriorityQueue. Class PriorityQueue<E> java.lang.object java.util.abstractcollection<e> java.util.abstractqueue<e> java.util.

Binary Search. (Yarılama) Bölüm Dizide Bir Öğe Arama

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

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

Merge (Bireşim) Algoritmayı önce bir örnek üzerinde açıklayalı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

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*/

MAT213 Bilgisayar Programlama I

static void dizi_24() { Random rnd = new Random(); int [] tutulan=new int[10]; int dogru;

VERİ YAPILARI DERS NOTLARI BÖLÜM 5 QUEUE (KUYRUK) Yard. Doç. Dr. Deniz KILINÇ

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

BMÜ-112 ALGORİTMA VE PROGRAMLAMA-II LABORATUARI DENEY-2 FÖYÜ

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir:

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

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

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

Standard Template Library

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

GÜZ DÖNEMİ AKT105 BİLGİSAYAR PROGRAMLAMA DERSİ 4. UYGULAMA

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

Yrd. Doç. Dr. A. Burak İNNER Bilgisayar Mühendisliği

Đlgili konular: Collection, Set, HashSet, Comparable, Comparator, TreeMap, Collections.synchronizedSortedSet(SortedSet), Serialized Form

Ders - 7 while döngüsü

BLM111 Programlama Dilleri I. Hafta 10 Diziler. Yrd. Doç. Dr. Caner ÖZCAN

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

Javada Diziler. Javada diziler

BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI

Final Sınavı Örnek Soruları Bahar 2018

ALGORİTMA VE PROGRAMLAMA I

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

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-10 Diziler. Yrd. Doç. Dr. Ümit ATİLA

C de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma

DOSYA ORGANİZASYONU. Sıralı erişimli dosya organizasyonu yöntemleri ÖZLEM AYDIN TRAKYA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ

Örnek 1: Programı yazın ve çalıştırın.

Algoritmalar ve Karmaşıklık

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

Algoritmaların Karşılaştırılması. Doç. Dr. Aybars UĞUR

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

Dizi ( Array ) ve Dizgi ( String )

ArrayList Uygulamaları

NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

Kılgılayan Sınıflar: AbstractMap, Attributes, HashMap, Hashtable, IdentityHashMap, RenderingHints, TreeMap, WeakHashMap

Bölüm 8. Ayrık Küme. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 16

Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir

Arama Algoritmaları. Doğrusal Arama ve Binary Arama

Aynı tipten çok sayıda değişken topluluğudur. X Y Score1 Score2 (0) (1) (2)...

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

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

Özyineleme (Recursion)

11- FONKSİYONLAR (FUNCTIONS)

Soru 1: Fahrenheit cinsinden verilen sıcaklığı Kelvin'e çeviren bir program yazınız. Aşağıdaki dönüşüm formülünü kullanabilirsiniz:

ALGORİTMA VE PROGRAMLAMA I

Operator Aşırı Yükleme (Operator OverLoading)

Bir c sınıfının doğal sıralaması ile tutarlı olması (be consistent with equals) demek, c sınıfı içindeki her e1 ve e2 nesnesi için

Görsel Programlama 1

Class HashMap. Class HashMap java.lang.object java.util.abstractmap java.util.hashmap. Kılgıladığı Arayüzler: Cloneable, Map, Serializable

Transkript:

SIRALAMA SORTING Doç. Dr. Aybars UĞUR

Giriş Sıralama ve arama tekniklerinden pek çok programda yararlanılmaktadır. Günlük yaşamımızda elemanların sıralı tutulduğu listeler yaygın olarak kullanılmaktadır. Telefon rehberindeki bir kişinin telefon numarasının bulunması bir arama (search) işlemidir. Telefon rehberlerindeki kayıtlar kişilerin soyadlarına göre sıralıdır. Bir telefon numarasının kime ait olduğunu bulmaya çalışmak da bir başka arama işlemidir. Eğer telefon rehberi kişilerin soyadlarına göre alfabetik olarak değil de telefon numaralarına göre kronolojik olarak sıralı olursa bu, arama işlemini basitleştirir. Kütüphanelerdeki kitapların özel yöntemlere göre sıralanarak raflara dizilmesi, bilgisayarın belleğindeki sayıların sıralanması da yapılacak arama işlemlerini hızlandırır ve kolaylaştırır. Genel olarak eleman toplulukları, bilgisayarda da, telefon rehberi gibi örneklerde de daha etkin erişmek (aramak ve bilgi getirmek) üzere sıralanır ve sıralı tutulurlar. SIRALAMA (SORTING) 2

Anahtar; İçsel ve Dışsal Sıralama Eleman (kayıt, yapı...) toplulukları genelde (her zaman değil) bir anahtara göre sıralı tutulurlar. Bu anahtar genelde elemanların bir alt alanı yani üyesidir (Elemanlar soyada göre sıralı olursa soyadı anahtardır, numaraya göre sıralı olursa numara anahtardır, nota göre olursa not alanı anahtardır). Elemanlar topluluğu içindeki her elemanın anahtar değeri kendinden önce gelen elemanın anahtar değerinden büyükse artan sırada, küçükse azalan sırada sıralıdır denilir (ilgili anahtara göre). Sıralama, sıralanacak elemanlar bellekte ise internal (içsel), kayıtların bazıları ikincil bellek ortamındaysa external (dışsal) sıralama olarak adlandırılır. SIRALAMA (SORTING) 3

Sıralama ve Arama Sıralama ve arama arasında bir ilişki olduğundan bir uygulamada ilk soru sıralama gerekli midir? olmalıdır. Arama işlemleri yoğun ise, sıralamanın veya o şekilde tutmanın getireceği yük, sıralı olmayan kayıtlar üzerindeki arama işlemlerinin getireceği toplam yük yanında çok hafif kalacaktır. Bu karar verilirse, arkasından sıralamanın nasıl yapılacağı ve hangi sıralama yöntemlerinin kullanılacağı kararlaştırılmalıdır. Bunun nedeni, tüm diğer yöntemlerden üstün evrensel bir sıralama tekniğinin olmamasındandır. SIRALAMA (SORTING) 4

SIRALAMA TEKNİKLERİNİN ETKİNLİKLERİ ve ANALİZİ

1) Bubble Sort (Kabarcık Sıralama) (Exchange Sorts kapsamında) void bubble(int x[], int n) int hold, j, pass; int switched = TRUE; for (pass=0; pass<n-1 && switched == TRUE; pass++) switched = FALSE; for(j=0; j<n-pass-1; j++) if (x[j] > x[j+1]) switched = TRUE; hold = x[j]; x[j] = x[j+1]; x[j+1] = hold; ; ; ; Bubble sort, sıralama teknikleri içinde anlaşılması ve programlanması kolay olmasına rağmen etkinliği en az olan algoritmalardandır (n elemanlı x dizisi için) : SIRALAMA (SORTING) 6

Bubble Sort un Zaman Karmaşıklığının Hesaplanması En fazla (n-1) iterasyon gerektirir. Veriler : 25 57 48 37 12 92 86 33 Tekrar 1 : 25 48 37 12 57 86 33 92 Tekrar 2 : 25 37 12 48 57 33 86 92 Tekrar 3 : 25 12 37 48 33 57 86 92 Tekrar 4 : 12 25 37 33 48 57 86 92 Tekrar 5 : 12 25 33 37 48 57 86 92 Tekrar 6 : 12 25 33 37 48 57 86 92 Tekrar 7 : Önceki turda değişen eleman olmadığından yapılmaz. Analizi kolaydır (İyileştirme yapılmamış algoritmada) : (n-1) iterasyon ve her iterasyonda (n-1) karşılaştırma. Toplam karşılaştırma sayısı : (n-1)*(n-1) = n 2-2n + 1 = O(n 2 ) (Yukarıdaki gibi iyileştirme yapılmış algoritmada etkinlik) : iterasyon i'de, (n-i) karşılaştırma yapılacaktır. Toplam karşılaştırma sayısı = (n-1)+(n-2)+(n-3)+...+(n-k) = kn - k*(k+1)/2 = (2kn - k 2 - k)/2 ortalama iterasyon sayısı, k, O(n) olduğundan = O(n 2 ) SIRALAMA (SORTING) 7

2) Quick Sort (Hızlı Sıralama) (Exchange Sorts kapsamında) #include <stdio.h> void qsort2(double *left, double *right) double *p = left, *q = right, w, x=*(left+(right-left>>1)); do while(*p<x) p++; while(*q>x) q--; if(p>q) break; w = *p; *p = *q; *q = w; while(++p <= --q); if(left<q) qsort2(left,q); if(p<right) qsort2(p,right); void main() double dizi[8] = 23, 398, 34, 100, 57, 67, 55, 320 ; qsort2( &dizi[0], &dizi[7] ); SIRALAMA (SORTING) 8

Quick Sort un Zaman Karmaşıklığının Hesaplanması n elemanlı bir dizi sıralanmak istendiğinde dizinin herhangi bir yerinden x elemanı seçilir (örnek olarak ortasındaki eleman). X elemanı j. yere yerleştiğinde 0. İle (j-1). yerler arasındaki elemanlar x'den küçük, j+1'den (n- 1)'e kadar olan elemanlar x'den büyük olacaktır. Bu koşullar gerçekleştirildiğinde x, dizide en küçük j. elemandır. Aynı işlemler, x[0]-x[j-1] ve x[j+1]-x[n-1] alt dizileri (parçaları) için tekrarlanır. Sonuçta veri grubu sıralanır. Eğer şanslı isek, seçilen her eleman ortanca değere yakınsa log 2 n iterasyon olacaktır = O(n log 2 n). Ortalama durumu işletim zamanı da hesaplandığında O(n log 2 n)'dir, yani genelde böyle sonuç verir. En kötü durumda ise parçalama dengesiz olacak ve n iterasyonla sonuçlanacağında O(n 2 ) olacaktır (en kötü durum işletim zamanı). SIRALAMA (SORTING) 9

QuickSort in C# - I static void quicksort(int[] dizi, int sol, int sağ) int index = partition(dizi, sol, sağ); if (sol < index - 1) quicksort(dizi, sol, index - 1); if (index < sağ) quicksort(dizi, index, sağ); static void Main(string[] args) int[] dizi = 9, 5, 3, 4, 7, 12, 65, 10 ; foreach (int sayı in dizi) Console.WriteLine(sayı); quicksort(dizi,0,7); Console.WriteLine("Sıralandıktan Sonra"); foreach (int sayı in dizi) Ekran Çıktısı : 9 5 3 4 7 12 65 10 Sıralandıktan Sonra 3 4 5 7 9 10 12 65 Console.WriteLine(sayı); SIRALAMA (SORTING) 10

QuickSort in C# - II static int partition(int[] dizi, int sol, int sağ) int i = sol, j = sağ; int tmp; int pivot = dizi[(sol + sağ) / 2]; while (i <= j) ; while (dizi[i] < pivot) i++; while (dizi[j] > pivot) j--; if (i <= j) tmp = dizi[i]; dizi[i] = dizi[j]; dizi[j] = tmp; i++; j--; return i; SIRALAMA (SORTING) 11

3) Straight Selection Sort (Seçmeli Sıralama) (Selection Sorts kapsamında) Elemanların seçilerek uygun yerlerine konulması ile gerçekleştirilen bir sıralamadır : void selectsort(int x[], int n) int i, indx, j, large; for(i=n-1; i>0; i--) large = x[0]; indx = 0; for(j=1; j<=i; j++) if(x[j]>large) large = x[j]; indx = j; ; x[indx] = x[i]; x[i] = large; ; Veriler : 25 57 48 37 12 92 86 33 Tekrar 1 : 25 57 48 37 12 33 86 92 Tekrar 2 : 25 57 48 37 12 33 86 92 Tekrar 3 : 25 33 48 37 12 57 86 92 Tekrar 4 : 25 33 12 37 48 57 86 92 Tekrar 5 : 25 33 12 37 48 57 86 92 Tekrar 6 : 25 12 33 37 48 57 86 92 Tekrar 7 : 12 25 33 37 48 57 86 92 Selection Sort'un analizi doğrudandır. 1.turda (n-1), 2.turda (n-2), 3... (n-1). Turda 1, karşılaştırma yapılmaktadır. Toplam karşılaştırma sayısı = (n-1)+(n-2)+...+1 = n*(n-1)/2 = (1/2)n 2 -(1/2)n = O(n 2 ) SIRALAMA (SORTING) 12

4) Insertion Sort (Eklemeli Sıralama) (Insertion Sorts kapsamında) Elemanların sırasına uygun olarak listeye tek tek eklenmesi ile gerçekleştirilen sıralamadır : void insertsort(int x[], int n) int i,k,y; for(k=1; k<n; k++) y=x[k]; for(i=k-1; i>=0 && y<x[i]; i--) x[i+1]=x[i]; x[i+1]=y; ; Veriler 25 57 48 37 12 92 86 33 Tekrar 1 25 57 48 37 12 92 86 33 Tekrar 2 25 48 57 37 12 92 86 33 Tekrar 3 25 37 48 57 12 92 86 33 Tekrar 4 12 25 37 48 57 92 86 33 Tekrar 5 12 25 37 48 57 92 86 33 Tekrar 6 12 25 37 48 57 86 92 33 Tekrar 7 12 25 33 37 48 57 86 92 SIRALAMA (SORTING) 13

Sıralama Algoritmalarının Karşılaştırılması Eğer veriler sıralı ise her turda 1 karşılaştırma yapılacaktır ve O(n) olacaktır. Veriler ters sıralı ise toplam karşılaştırma sayısı: (n-1)+(n-2)+...+3+2+1 = n*(n+1)/2 = O(n 2 ) olacaktır. Simple Insertion Sort'un ortalama karşılaştırma sayısı ise O(n 2 )'dir. Selection Sort ve Simple Insertion Sort, Bubble Sort'a göre daha etkindir. Selection Sort, Insertion Sort'tan daha az atama işlemi yaparken daha fazla karşılaştırma işlemi yapar. Bu nedenle Selection Sort büyük kayıtlardan oluşan az elemanlı veri grupları için (atamaların süresi çok fazla olmaz) ve karşılaştırmaların daha az yük getireceği basit anahtarlı durumlarda uygundur. Tam tersi için, insertion sort uygundur. Elemanlar bağlı listedelerse araya eleman eklemelerde veri kaydırma olmayacağından insertion sort mantığı uygundur. n'in büyük değerleri için quicksort insertion ve selection sort'tan daha etkindir. Quicksort'u kullanmaya başlama noktası yaklaşık 30 elemanlı durumlardır; daha az elemanın sıralanması gerektiğinde insertion sort kullanılabilir. SIRALAMA (SORTING) 14

5) Merge Sort (Birleştirmeli Sıralama) (Merge Sorts kapsamında) #include <stdio.h> #define numelts 8 void mergesort(int x[], int n) int aux[numelts], i,j,k,l1,l2,size,u1,u2; size = 1; while(size<n) l1 = 0; k = 0; while(l1+size<n) l2 = l1+size; u1 = l2-1; u2 = (l2+size-1<n)? l2+size-1 : n-1; for(i=l1,j=l2; i<=u1 && j<=u2; k++) if(x[i]<=x[j]) aux[k]=x[i++]; else aux[k]=x[j++]; for(;i<=u1;k++) aux[k] = x[i++]; for(;j<=u2;k++) aux[k] = x[j++]; l1 = u2+1; ; for(i=l1;k<n;i++) aux[k++] = x[i]; for(i=0;i<n;i++) x[i]=aux[i]; size*=2; SIRALAMA (SORTING) ; 15

Merge Sort un Zaman Karmaşıklığı Analiz : log 2 n tur ve her turda n veya daha az karşılaştırma. = O(n log 2 n) karşılaştırma. Quicksort ta en kötü durumda O(n 2 ) karşılaştırma gerektiği düşünülürse daha avantajlı. Fakat mergesort ta atama işlemleri fazla ve aux dizi için daha fazla yer gerekiyor. SIRALAMA (SORTING) 16

C# Array Sınıfı ile Dizi Sıralama ve İkili Arama string[] dizi = "Telefon", "Buzdolabı", "Fırın", "Süpürge" ; Console.WriteLine("Sıralanmadan Önce:"); foreach (string eşya in dizi) Console.WriteLine(eşya); Array.Sort(dizi); Console.WriteLine("\nSıralandıktan Sonra:"); foreach (string eşya in dizi) Console.WriteLine(eşya); Console.WriteLine(Array.BinarySearch(dizi, "Fırın")); Console.WriteLine(Array.BinarySearch(dizi, "Masa")); Ekran Çıktısı : Sıralanmadan Önce: Telefon Buzdolabı Fırın Süpürge Sıralandıktan Sonra: Buzdolabı Fırın Süpürge Telefon 1-3 SIRALAMA (SORTING) 17

Liste Örneği Üzerinde C# Koleksiyonlarında Sıralama, Arama, Diziye Aktarma List<int> liste = new List<int>(); liste.add(5); liste.add(3); liste.add(7); Console.WriteLine("Sıralanmadan Önce:"); foreach (int sayı in liste) Console.WriteLine(sayı); liste.sort(); Console.WriteLine("\nSıralandıktan Sonra:"); foreach (int sayı in liste) Console.WriteLine(sayı); Console.WriteLine(liste.BinarySearch(5)); indis Ekran Çıktısı : Sıralanmadan Önce: 5 3 7 Sıralandıktan Sonra: 3 5 7 1 Dizi Elemanları: 3 5 7 int[] dizi = liste.toarray(); Console.WriteLine("\nDizi Elemanları:"); foreach (int sayı in dizi) Console.WriteLine(sayı); SIRALAMA (SORTING) 18

Sınıfın Belli Bir Üyesine Göre Sıralama I (http://www.dotnetperls.com/icomparable) class Employee : IComparable<Employee> public int Maaş get; set; public string Ad get; set; public int CompareTo(Employee other) // Alphabetic sort if Maaş is equal. [A to Z] if (this.maaş == other.maaş) return this.ad.compareto(other.ad); // Default to Maaş sort. [High to low] return other.maaş.compareto(this.maaş); public override string ToString() // String representation. return this.maaş.tostring() + "," + this.ad; SIRALAMA (SORTING) 19

Sınıfın Belli Bir Üyesine Göre Sıralama - II class Program static void Main() List<Employee> liste = new List<Employee>(); liste.add(new Employee() Ad = "Steve", Maaş = 10000 ); liste.add(new Employee() Ad = "Janet", Maaş = 10000 ); liste.add(new Employee() Ad = "Andrew", Maaş = 10000 ); liste.add(new Employee() Ad = "Bill", Maaş = 500000 ); liste.add(new Employee() Ad = "Lucy", Maaş = 8000 ); // Uses IComparable.CompareTo() liste.sort(); // Uses Employee.ToString foreach (var eleman in liste) Console.WriteLine(eleman); Ekran Çıktısı : 500000,Bill 10000,Andrew 10000,Janet 10000,Steve 8000,Lucy SIRALAMA (SORTING) 20

Java Koleksiyonları ile Dizi Sıralama import java.util.*; class Sorting public static void main(string args[]) // Dizilerin Sıralanması String dizi[] = "Telefon", "Buzdolabı", "Fırın", "Süpürge" ; Arrays.sort(dizi); for(string s : dizi) System.out.println(s); double sayilar[] = 2.3, 1.1, 3.5, -1 ; Arrays.sort(sayilar); for(double sayi : sayilar) System.out.println(sayi); Buzdolab² F²r²n S³p³rge Telefon -1.0 1.1 2.3 3.5 SIRALAMA (SORTING) 21

Java Koleksiyonları ile Liste Sıralama import java.util.*; class Sorting2 public static void main(string args[]) LinkedList<Integer> liste = new LinkedList<Integer>(); liste.add(5); liste.add(3); liste.add(7); Collections.sort(liste); for(integer i : liste) System.out.println(i); // Ekran Çıktısı 3 5 7 SIRALAMA (SORTING) 22

Collections kullanarak Heap Sort import java.util.*; public class HeapSort public static void main(string args[]) Vector<Integer> liste = new Vector<Integer>(); liste.add(3); liste.add(1); liste.add(5); liste.add(9); liste.add(7); Collection <Integer> listes = heapsort(liste); Iterator iterator; iterator = listes.iterator(); while (iterator.hasnext()) System.out.print(iterator.next()+" "); System.out.println(); public static <E> List<E> heapsort(collection<e> c) Queue<E> queue = new PriorityQueue<E>(c); List<E> result = new ArrayList<E>(); while (!queue.isempty()) result.add(queue.remove()); return result; 1 3 5 7 9 SIRALAMA (SORTING) 23