![]() |
Sıralama Algoritmaları |
![]() |
![]() |
#16 |
Prof. Dr. Sinsi
|
![]() Sıralama Algoritmalarıİplik sıralaması (İngilizcesi: Strand sort) bilgisayar bilimlerinde kullanılan bir sıralama algoritmasıdır ![]() ![]() ![]() ![]() Algoritmanın adı, sıralanacak dizinin içinden çıkan kendi içinde sıralanmış alt dizilerin ipliklere benzetilmesinden gelmektedir ![]() ![]() İplik sıralaması algoritmasının karmaşıklığı ortalamada O(n log n)'dir ![]() ![]() Örnek Sıralanacak dizinin üzerinden bir kere geçilir ve yükselen (sıralı) sayılar alınır ![]() Sıralı olan alt dizi ilk yinelemenin ardından boş olan sıralanmış dizinin üstüne konur ![]() Ana dizinin üzerinden yeniden geçilir ve kendi içinde sıralı yeni bir alt dizi çıkarılır ![]() Artık sıralanmış dizi boş olmadığından yeni çıkarılan alt dizi sıralanmış diziyle birleştirilir ![]() Alt dizi ve ana dizi boşalana kadar 3 ve 4üncü adımlar yinelenir ![]() Sıralanmamış dizi Alt dizi Sıralanmış dizi 3 1 5 4 2 1 4 2 3 5 1 4 2 3 5 2 1 4 3 5 2 1 3 4 5 2 1 3 4 5 1 2 3 4 5 Sözde Kodu İplik sıralamasının yalın bir sözde kodu aşağıda verilmiştir: procedure strandSort( A : list of sortable items ) defined as: while length( A ) > 0 clear sublist sublist[ 0 ] := A[ 0 ] remove A[ 0 ] for each i in 0 to length( A ) do: if A[ i ] > sublist[ last ] then append A[ i ] to sublist remove A[ i ] end if end for merge sublist into results end while return results end procedure Uygulama Örnekleri C# ile uygulama Aşağıdaki program iplik sıralamasının C# kullanılarak oluşturulmuş bir uygulamasıdır: public static LinkedList<int> sort(LinkedList<int> array) { LinkedList<int> results = new LinkedList<int>(); LinkedList<int> sublist = new LinkedList<int>(); while (array ![]() { sublist ![]() sublist ![]() ![]() ![]() array ![]() LinkedListNode<int> i = array ![]() while (i != null) { if(i ![]() ![]() ![]() { sublist ![]() ![]() LinkedListNode<int> temp = i; i = i ![]() array ![]() } else { i = i ![]() } } i = results ![]() while (sublist ![]() { if (i == null) { results ![]() ![]() ![]() sublist ![]() } else if (sublist ![]() ![]() ![]() { results ![]() ![]() ![]() sublist ![]() } else { i = i ![]() } } } return results; } Java ile uygulama Aşağıdaki program iplik sıralamasının Java kullanılarak oluşturulmuş bir uygulamasıdır: public static <E extends Comparable<? super E>> List<E> sort(Collection<E> coll) { List<E> results = new LinkedList<E>(); while (!coll ![]() { LinkedList<E> sublist = new LinkedList<E>(); Iterator<E> i = coll ![]() sublist ![]() ![]() while (i ![]() { E val = i ![]() if (val ![]() ![]() { sublist ![]() i ![]() } } if (!results ![]() { ListIterator<E> li = results ![]() E current = li ![]() while (!sublist ![]() { if (sublist ![]() ![]() li ![]() ![]() else if (li ![]() current = li ![]() else break; } } results ![]() } return results; } |
![]() |
![]() |
![]() |
Sıralama Algoritmaları |
![]() |
![]() |
#17 |
Prof. Dr. Sinsi
|
![]() Sıralama Algoritmalarıİçgözlemle sıralama İçgözlemle sıralama 1997 yılında David Musser tarafından tasarlanmış bir sıralama algoritmasıdır ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
![]() |
Sıralama Algoritmaları |
![]() |
![]() |
#18 |
Prof. Dr. Sinsi
|
![]() Sıralama Algoritmalarıİçgözlemle sıralama İçgözlemle sıralama 1997 yılında David Musser tarafından tasarlanmış bir sıralama algoritmasıdır ![]() ![]() ![]() ![]() ![]() |
![]() |
![]() |
|