Thuật toán quicksort trong java

Lập trình Java

Quicksort là một thuật toán sắp xếp hiệu quả, thường được sử dụng để sắp xếp các mảng và danh sách. Đây là một ví dụ về thuật toán quicksort bằng Java:

public class QuickSort {
   public static void main(String[] args) {
      int[] arr = {10, 7, 8, 9, 1, 5};
      int n = arr.length;
      
      quickSort(arr, 0, n-1);
      
      System.out.println("Mảng đã được sắp xếp:");
      for(int i = 0; i < n; i++) {
         System.out.print(arr[i] + " ");
      }
   }
   
   public static void quickSort(int[] arr, int low, int high) {
      if(low < high) {
         int pi = partition(arr, low, high);
         
         quickSort(arr, low, pi-1);
         quickSort(arr, pi+1, high);
      }
   }
   
   public static int partition(int[] arr, int low, int high) {
      int pivot = arr[high];
      int i = low - 1;
      
      for(int j = low; j < high; j++) {
         if(arr[j] < pivot) {
            i++;
            
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
         }
      }
      
      int temp = arr[i+1];
      arr[i+1] = arr[high];
      arr[high] = temp;
      
      return i+1;
   }
}

Trong ví dụ này, một mảng nguyên arr được tạo ra để lưu trữ các giá trị cần sắp xếp. Sau đó, hàm quickSort được sử dụng để sắp xếp mảng đó. Hàm này sử dụng phân hoạch để chia mảng thành các phần tử nhỏ hơn và lớn hơn phần tử chốt (pivot), sau đó sắp xếp các phần tử đó đệ quy.

Hàm partition được sử dụng để thực hiện phân hoạch bằng cách chọn phần tử chốt (pivot) là phần tử cuối cùng của mảng. Các phần tử được duyệt qua và các phần tử nhỏ hơn pivot được đưa vào một phần tử con mảng bắt đầu từ i+1. Cuối cùng, phần tử chốt được hoán đổi với phần tử đầu tiên trong phần tử con này.

Sau khi quá trình sắp xếp kết thúc, mảng được in ra để kiểm tra kết quả.

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 *