Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Chương trình Java Quick Sort lặp (Iterative)

Dưới đây là chương trình Java cho Quick Sort lặp:

Ví dụ

public class Demo{ 
    void swap_vals(int arr[], int i, int j){ 
        int temp = arr[i]; 
        arr[i] = arr[j]; 
        arr[j] = temp; 
    } 
    int partition(int arr[], int l, int h){ 
        int x = arr[h]; 
        int i = (l - 1); 
        for (int j = l; j <= h - 1; j++){ 
            if (arr[j] <= x){ 
                i++; 
                swap_vals(arr, i, j); 
            } 
        } 
        swap_vals(arr, i + 1, h); 
        return (i + 1); 
    } 
    void quick_sort(int arr[], int l, int h){ 
        int my_list[] = new int[h - l + 1]; 
        int top = -1; 
        my_list[++top] = l; 
        my_list[++top] = h; 
        while (top >= 0){ 
            h = my_list[top--]; 
            l = my_list[top--]; 
            int p = partition(arr, l, h); 
            if (p - 1 > l){ 
                my_list[++top] = l; 
                my_list[++top] = p - 1; 
            } 
            if (p + 1 < h){ 
                my_list[++top] = p + 1; 
                my_list[++top] = h; 
            } 
        } 
    } 
    public static void main(String args[]){ 
        Demo my_ob = new Demo(); 
        int my_arr[] = { 34, 76, 41, 32, 11, 0 , 91, 102, -11}; 
        my_ob.quick_sort(my_arr, 0, my_arr.length - 1); 
        int i; 
        System.out.println("Sau khi quick sort lặp, mảng là: "); 
        for (i = 0; i < my_arr.length; ++i) 
            System.out.print(my_arr[i] + " "); 
    } 
}

Kết quả

Sau khi quick sort lặp, mảng là: -11 0 11 32 34 41 76 91 102

Lớp Demo chứa 3 hàm: swap_vals dùng để hoán đổi giá trị bằng biến tạm, partition chia mảng thành hai nửa dựa trên giá trị pivot, và quick_sort dùng giá trị pivot để sắp xếp các giá trị trong mảng.

Trong hàm main, một instance của lớp Demo được tạo cùng với một mảng. Hàm quick_sort được gọi trên mảng này và kết quả được hiển thị trên console.