Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

โปรแกรม Java สำหรับ Iterative Merge Sort


ต่อไปนี้เป็นโปรแกรม Java สำหรับ Iterative Merge Sort -

ตัวอย่าง

import java.util.Arrays;
public class Demo{
   public static void merge_sort(int[] my_arr){
      if(my_arr == null){
         return;
      }
      if(my_arr.length > 1){
         int mid = my_arr.length / 2;
         int[] left = new int[mid];
         for(int i = 0; i < mid; i++){
            left[i] = my_arr[i];
         }
         int[] right = new int[my_arr.length - mid];
         for(int i = mid; i < my_arr.length; i++){
            right[i - mid] = my_arr[i];
         }
         merge_sort(left);
         merge_sort(right);
         int i = 0;
         int j = 0;
         int k = 0;
         while(i < left.length && j < right.length){
            if(left[i] < right[j]){
               my_arr[k] = left[i];
               i++;
            } else {
               my_arr[k] = right[j];
               j++;
            }
            k++;
         }
         while(i < left.length){
            my_arr[k] = left[i];
            i++;
            k++;
         }
         while(j < right.length){
            my_arr[k] = right[j];
            j++;
            k++;
         }
      }
   }
   public static void main(String[] args){
      int my_arr[] = {56, 78, 91, 21, 34, 0, 11};
      int i=0;
      merge_sort(my_arr);
      System.out.println("The array after sorting is ");
      for(i=0; i<my_arr.length; i++)
      System.out.print(my_arr[i]+" ");
   }
}

ผลลัพธ์

The array after sorting is
0 11 21 34 56 78 91

คลาสชื่อ Demo มีฟังก์ชัน 'merge_sort' ซึ่งจะตรวจสอบว่าอาร์เรย์ว่างเปล่าหรือไม่ ถ้าใช่ จะไม่ส่งคืนสิ่งใด หากความยาวของอาร์เรย์มากกว่าหนึ่งค่า ค่าของ 'mid' จะถูกคำนวณและอาร์เรย์จะวนซ้ำมากกว่าค่า 'mid' โดยทั่วไปอาร์เรย์จะถูกแบ่งออกเป็นสองส่วนเท่า ๆ กันและองค์ประกอบทางด้านซ้ายของอาร์เรย์จะถูกใส่ลงในอาร์เรย์ใหม่และองค์ประกอบทางด้านขวาของอาร์เรย์จะถูกใส่ลงในอาร์เรย์ที่ต่างกัน ตอนนี้อาร์เรย์เหล่านี้จะถูกแยกและจัดเรียง แล้วนำมารวมกัน

ในฟังก์ชันหลัก อาร์เรย์ถูกกำหนดและเรียกใช้ฟังก์ชันบนองค์ประกอบอาร์เรย์นี้ เอาต์พุตจะแสดงบนคอนโซล