Birleştirmeli Sıralama Merge Sort
Şimdi Sıra geldi Merge Sort’a…
İngilizce Adı | Merge Sort |
Ortalama | O(n log n) |
En kötü | O(n log n) |
Bellek | O(n) |
Kararlı mı? | Evet |
Yöntem | Karşılaştırma ile Birleştirme |
Her zamanki gibi videomuz ile başlıyalım…
Şimdi Nedir bu merge sort… Öncelikle direk grafik üzerinden anlatıcam Bir diziyi sürekli iki parçaya böldüğünüzü düşünün.. Ve bu dizide Tüm elemanlar 2 parçaya ayrıldıktan sonra sıralama yaparak birleştirin..
Grafik olarak..
Animasyon olarak…
Ve En son kod olarak ….
public classmergeSort{
public staticvoidmain(String a[]){
inti;
intarray[]={12,9,4,99,120,1,3,10};
System.out.println(“nn RoseIndiann”);
System.out.println(” Selection Sortnn”);
System.out.println(“Values Before the sort:n”);
for(i =0; i < array.length; i++)
System.out.print(array[i]+” “);
System.out.println();
mergeSort_srt(array,0, array.length-1);
System.out.print(“Values after the sort:n”);
for(i =0; i <array.length; i++)
System.out.print(array[i]+” “);
System.out.println();
System.out.println(“PAUSE”);
}
public staticvoidmergeSort_srt(intarray[],int lo,intn){
intlow = lo;
inthigh = n;
if(low >= high) {
return;
}
intmiddle =(low + high)/2;
mergeSort_srt(array, low, middle);
mergeSort_srt(array, middle +1, high);
intend_low = middle;
intstart_high = middle +1;
while((lo <= end_low)&&(start_high <= high)) {
if(array[low]< array[start_high]) {
low++;
}else{
intTemp = array[start_high];
for(intk = start_high-1; k >= low; k–) {
array[k+1]= array[k];
}
array[low]= Temp;
low++;
end_low++;
start_high++;
}
}
}
}