Computer >> Máy Tính >  >> Lập trình >> Java

Chương trình Java cho Bitonic Sort

Trong Bitonic Sort, sự so sánh theo trình tự được xác định trước (chuỗi Bitonic), không phụ thuộc vào dữ liệu được sắp xếp. Hãy để chúng tôi xem một ví dụ cho chương trình Java Bitonic Sort -

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("The object of the class has been created.");
      my_ob.sort_vals(my_arr, 0, my_arr.length, up);
      System.out.println("The array after performing bitonic sort is");
      print_vals(my_arr);
   }
}

Đầu ra

The object of the class has been created.
The array after performing bitonic sort is
0 11 12 32 54 67 72 91

Một lớp có tên Demo chứa hàm ‘so sánh_swap’ nhận mảng làm tham số và kiểm tra hướng sắp xếp phải được thực hiện. Theo đó, các phần tử được hoán đổi vị trí. Một hàm khác có tên là "merge_vals" được định nghĩa để lặp qua mảng và gọi hàm "so sánh_swap" với các giá trị cụ thể.

Tiếp theo, hàm ‘merge_vals’ được gọi với nhiều tham số khác nhau. Một hàm khác có tên là ‘sort_vals’ được định nghĩa được gọi bên trong hàm với các giá trị khác nhau. Sau đó, các giá trị được sắp xếp này

được hợp nhất. Một hàm tĩnh có tên là ‘print_vals’ được định nghĩa để lấy mảng làm tham số và chạy vòng lặp ‘for’ qua các phần tử của mảng và in nó trên bảng điều khiển.

Hàm main xác định một mảng và một giá trị cho biến "up". Một đối tượng lớp mới được tạo và hàm ‘sort_now’ được gọi trên mảng được xác định. Sau đó, đầu ra được in trên bảng điều khiển.