Laboratoriya ishi 13 Mavzu



Yüklə 0,6 Mb.
səhifə10/13
tarix13.04.2023
ölçüsü0,6 Mb.
#105411
1   ...   5   6   7   8   9   10   11   12   13
Laboratoriya ishi 13 Mavzu

public class MergeSort {
public static void main(String[] args) {
int[] A = {6,5,12,10,9,1};
sort(A); //saralashni boshlash
System.out.println(Arrays.toString(A)); //natijani chop qilish
}
private static void sort(int[] array) {
if(array.length<=1){ //massiv qismlarini elementlar sonin aniqlash
return; //1 dan kichik yoki teng bo`lsa ajratishni to`xtatish
}
int leftSize = array.length/2; //chap tomon bo`lak uzunligini aniqlash
int rightSize = array.length-leftSize; //o`ng tomon bo`lak uzunligini aniqlash
int[] left = Arrays.copyOfRange(array, 0, leftSize); //mos ravishda o`ng va chap
int[] right = Arrays.copyOfRange(array, leftSize, leftSize+rightSize); //submassivlarga ajratish
sort(left); //rekursiya orqali
sort(right); //bo`laklarga ajratish
merge(array, left, right); //to`g`ri tartibda birlashtirish
}
private static void merge(int[] array, int[] left, int[] right) {
int leftIndex = 0; //left va right submassiv elementlarini
int rightIndex = 0; //to`g`ri saralangan tartibda
int targetIndex = 0; //array massiviga joylashtirsh
int remaining = left.length+right.length;
while(remaining>0){
if (leftIndex >= left.length){
array[targetIndex] = right[rightIndex++];
}else
if (rightIndex >= right.length){
array[targetIndex] = left[leftIndex++];
}else
if (left[leftIndex]-right[rightIndex] < 0){
array[targetIndex] = left[leftIndex++];
}else{
array[targetIndex] = right[rightIndex++];
}
targetIndex++;
remaining--;
}
}
}
Qadamlarda tasvirlanishi:

Aytib o`tish joizki, chiziqli saralash algoritmlaridan farqli o`laroq, birlashmali saralash massiv avvaldan saralangan yoki saralanmaganligiga qaramay ajratib birlashtiradi. Shuning uchun ham eng yomon holatda, u chiziqli saralash algoritmlariga qaraganda tez ishlashiga qaramay, eng yaxshi holatda uning samarasi chiziqli algoritmlardan past bo`ladi. Demak, birlashmali saralashni qisman saralangan massivlarni saralash uchun qo`llamagan ma'qul.

Yüklə 0,6 Mb.

Dostları ilə paylaş:
1   ...   5   6   7   8   9   10   11   12   13




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə