Java Birleştirme Sıralama Algoritması Uygulaması? Ayrıntılı Açıklama ve Eksiksiz Eğitim
Yayınlanan: 2021-01-20
Crunchify'da şimdiye kadar 500+ Java and Spring MVC
teknolojisi ile ilgili öğreticiler yazdık. Yeni şeyler öğrenmek beni hiç sıkmadı. Her gün yeni şeyler öğrenmeyi seviyorum ve okuyucularım için de böyle olduğuna inanıyorum :).
Daha önce görmüş olabileceğiniz gibi Kabarcık Sıralama Algoritması, Seçim Sıralama Algoritması ve Yerleştirme Sıralama Algoritması çeşitli röportajlar arasında oldukça popülerdir.
Bu dersimizde Merge Sort Algorithm
üzerinden gideceğiz.
Birleştirme sıralama algoritması çok basittir. Bir diziyi yalnızca bir düzeye ulaştığında ikiye bölün ve sıralayın. Bir sonraki adım, sırayla birleştirmek. Temelde divide and conquer
yaklaşımıdır.
Burada, öğelerin nasıl bölüneceği ve birleştirileceğine ilişkin birleştirme sıralaması hakkında basit bir açıklama bulunmaktadır.

Bugün bu eğitimde aşağıdaki tüm soruları yanıtlayalım:
- Birleştirme sıralama algoritması nedir?
- Birleştirmenin uygulanması nedir?
- Java'da Mergesort – Eğitim
- birleştirme sıralama java kodu
Aşağıdaki adımları uygulayacağız:
- 10 boyutunda
crunchifyArray
oluşturun - 10 rastgele Tamsayıyı diziye doldurun
- İlk Diziyi yazdır
- Birleştirme Sıralaması Gerçekleştirin
- Birleştirme sıralamasından sonra son Diziyi yazdır
İşte bir Java Kodu:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
package crunchify . com . tutorial ; import java . util . * ; /** * @author Crunchify.com Merge Sort Algorithm in Java * */ public class CrunchifyMergeSortAlgorithm { public static Integer [ ] crunchifyArray = new Integer [ 10 ] ; ; public static int iteration = 1 ; // Divide and Merge public static void crunchifyMergeSort ( Integer [ ] crunchifyArray ) { Integer [ ] tempArray = new Integer [ crunchifyArray . length ] ; // recursively perform merge sort crunchifyMergeSort ( crunchifyArray , tempArray , 0 , crunchifyArray . length - 1 ) ; } // Idea is simple: // First divide whole array into 2 part // Divide each array into another 2 part // Once it reaches to only 1 elements in each side tree, just sort it // Merge backward the same way to get complete sorted array private static void crunchifyMergeSort ( Integer [ ] crunchifyArray , Integer [ ] tempArray , int myLeft , int myRight ) { if ( myLeft < myRight ) { int center = ( myLeft + myRight ) / 2 ; crunchifyMergeSort ( crunchifyArray , tempArray , myLeft , center ) ; crunchifyMergeSort ( crunchifyArray , tempArray , center + 1 , myRight ) ; crunchifyMerge ( crunchifyArray , tempArray , myLeft , center + 1 , myRight ) ; } } // Merge Sort Algorithm private static void crunchifyMerge ( Integer [ ] crunchifyArray , Integer [ ] tempArray , int left , int myRight , int rightMost ) { int leftEnd = myRight - 1 ; int k = left ; int num = rightMost - left + 1 ; while ( left < = leftEnd && myRight <= rightMost) if (crunchifyArray[left].compareTo(crunchifyArray[myRight]) <= 0) tempArray[k++] = crunchifyArray[left++]; else tempArray [ k ++ ] = crunchifyArray [ myRight ++ ] ; while ( left < = leftEnd ) tempArray [ k ++ ] = crunchifyArray [ left ++ ] ; while ( myRight < = rightMost ) tempArray [ k ++ ] = crunchifyArray [ myRight ++ ] ; for ( int i = 0 ; i < num ; i ++ , rightMost -- ) crunchifyArray [ rightMost ] = tempArray [ rightMost ] ; System . out . print ( "Iteration # " + iteration + " ===> " ) ; crunchifyPrint ( ) ; iteration ++ ; } // Get Random Integer in Java public static Integer getRandomIntegers ( ) { Random crunchifyRandom = new Random ( ) ; int myNumber = crunchifyRandom . nextInt ( 150 ) ; return myNumber ; } // Simply Print Arrays public static void crunchifyPrint ( ) { for ( int n : crunchifyArray ) { System . out . print ( " " + n + " " ) ; } System . out . print ( "\n" ) ; } // Main Method public static void main ( String [ ] args ) { for ( int i = 0 ; i < crunchifyArray . length ; i ++ ) { crunchifyArray [ i ] = getRandomIntegers ( ) ; } System . out . print ( "Here is our initial array: " ) ; crunchifyPrint ( ) ; System . out . println ( ) ; // Perform actual sorting crunchifyMergeSort ( crunchifyArray ) ; System . out . println ( ) ; System . out . print ( "Here is an array after Merge Sort: " ) ; crunchifyPrint ( ) ; } } |
Eclipse Konsol Çıktısı:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Here is our initial array : 45 53 10 50 48 8 106 77 44 108 Iteration # 1 ===> 45 53 10 50 48 8 106 77 44 108 Iteration # 2 ===> 10 45 53 50 48 8 106 77 44 108 Iteration # 3 ===> 10 45 53 48 50 8 106 77 44 108 Iteration # 4 ===> 10 45 48 50 53 8 106 77 44 108 Iteration # 5 ===> 10 45 48 50 53 8 106 77 44 108 Iteration # 6 ===> 10 45 48 50 53 8 77 106 44 108 Iteration # 7 ===> 10 45 48 50 53 8 77 106 44 108 Iteration # 8 ===> 10 45 48 50 53 8 44 77 106 108 Iteration # 9 ===> 8 10 44 45 48 50 53 77 106 108 Here is an array after Merge Sort : 8 10 44 45 48 50 53 77 106 108 |
crunchifyMergeSort
ve crunchifyMerge
olmak üzere iki yöntemi anlamak için programı dikkatli bir şekilde hata ayıklamayı deneyin. Yukarıdaki kodu çalıştıran herhangi bir sorunuz veya sorununuz varsa bana bildirin.

Büyük O Gösterimi / Birleştirme Sıralaması Algo Karmaşıklığı Nedir?
-
n*log(n)
Birleştirme Sıralama En İyi Durum Senaryosu Karmaşıklığı?
-
O(n)
zaten sıralanmış giriş olması durumunda