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

Chương trình Java Bitonic Sort

Trong Bitonic Sort, so sánh theo trình tự định sẵn (dãy Bitonic), không phụ thuộc dữ liệu cần sắp xếp. Hãy xem ví dụ Bitonic Sort Java:

Ví dụ

public class Demo{ 
    void compare_swap(int my_arr[], int i, int j, int direction){ 
        if ((my_arr[i] > my_arr[j] && direction == 1) || (my_arr[i] < my_arr[j] && direction == 0)){ 
            int temp = my_arr[i]; 
            my_arr[i] = my_arr[j]; 
            my_arr[j] = temp; 
        } 
    } 
    void merge_vals(int my_arr[], int low, int cnt, int direction){ 
        if (cnt > 1){ 
            int k = cnt / 2; 
            for (int i = low; i < low + k; i++) 
                compare_swap(my_arr, i, i + k, direction); 
            merge_vals(my_arr, low, k, direction); 
            merge_vals(my_arr, low + k, k, direction); 
        } 
    } 
    void sort_vals(int my_arr[], int low, int cnt, int direction){ 
        if (cnt > 1){ 
            int k = cnt / 2; 
            sort_vals(my_arr, low, k, 1); 
            sort_vals(my_arr, low + k, k, 0); 
            merge_vals(my_arr, low, cnt, direction); 
        } 
    } 
    static void print_vals(int my_arr[]){ 
        int n = my_arr.length; 
        for (int i = 0; i < n; ++i) 
            System.out.print(my_arr[i] + " "); 
        System.out.println(); 
    } 
    public static void main(String args[]){ 
        int my_arr[] = {12, 67, 91, 54, 72, 32, 11, 0}; 
        int up = 1; 
        Demo my_ob = new Demo(); 
        System.out.println("Đối tượng lớp đã được tạo."); 
        my_ob.sort_vals(my_arr, 0, my_arr.length, up); 
        System.out.println("Mảng sau khi bitonic sort: "); 
        print_vals(my_arr); 
    } 
}

Kết quả

Đối tượng lớp đã được tạo. 
Mảng sau khi bitonic sort: 0 11 12 32 54 67 72 91

Lớp Demo chứa hàm compare_swap nhận mảng, kiểm tra hướng sắp xếp. Theo đó, phần tử được hoán đổi. Hàm merge_vals duyệt mảng và gọi compare_swap với giá trị cụ thể.

Hàm merge_vals gọi với các tham số khác. Hàm sort_vals gọi bên trong với giá trị khác. Các giá trị đã sắp xếp được gộp. Hàm tĩnh print_vals nhận mảng, chạy vòng for qua các phần tử và in ra console.

Main định nghĩa mảng và giá trị up. Instance mới tạo và sort_vals gọi trên mảng. Kết quả in ra console.