Thuật toán sắp xếp merge sort trong Java

Lập trình Java

Merge sort là một thuật toán sắp xếp đệ quy được sử dụng để sắp xếp một mảng bằng cách chia nó thành các mảng con, sắp xếp từng mảng con, và sau đó trộn các mảng con lại với nhau để tạo thành một mảng đã sắp xếp. Thuật toán merge sort có thể được triển khai trong Java bằng cách sử dụng đệ quy để chia mảng thành các mảng con, sau đó sử dụng thuật toán trộn để kết hợp các mảng con đã sắp xếp.

Ví dụ về thuật toán sắp xếp merge sort trong Java:

public class MergeSortExample {
   public static void main(String[] args) {
      int[] arr = { 3, 1, 4, 2, 7, 5, 8, 6 };
      
      System.out.println("Mảng trước khi sắp xếp: " + Arrays.toString(arr));
      
      mergeSort(arr, 0, arr.length - 1);
      
      System.out.println("Mảng sau khi sắp xếp: " + Arrays.toString(arr));
   }
   
   public static void mergeSort(int[] arr, int left, int right) {
      if (left < right) {
         int middle = (left + right) / 2;
         mergeSort(arr, left, middle);
         mergeSort(arr, middle + 1, right);
         merge(arr, left, middle, right);
      }
   }
   
   public static void merge(int[] arr, int left, int middle, int right) {
      int n1 = middle - left + 1;
      int n2 = right - middle;
      int[] L = new int[n1];
      int[] R = new int[n2];
      
      for (int i = 0; i < n1; ++i)
         L[i] = arr[left + i];
      for (int j = 0; j < n2; ++j)
         R[j] = arr[middle + 1 + j];
         
      int i = 0, j = 0;
      int k = left;
      while (i < n1 && j < n2) {
         if (L[i] <= R[j]) {
            arr[k] = L[i];
            i++;
         } else {
            arr[k] = R[j];
            j++;
         }
         k++;
      }
      
      while (i < n1) {
         arr[k] = L[i];
         i++;
         k++;
      }
      
      while (j < n2) {
         arr[k] = R[j];
         j++;
         k++;
      }
   }
}

Trong ví dụ này, thuật toán merge sort được triển khai bằng cách sử dụng hàm đệ quy mergeSort để chia mảng thành các mảng con, sau đó sử dụng hàm merge để trộn các mảng con đã sắp xếp với nhau.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *