用于Bitonic Sort的Java程序

在Bitonic Sort中,比较是按预定义的顺序(Bitonic顺序)进行的,而不取决于要排序的数据。让我们看一下Bitonic Sort Java程序的示例-

示例

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("该类的对象已创建。");
      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);
   }
}

输出结果

该类的对象已创建。
The array after performing bitonic sort is
0 11 12 32 54 67 72 91

名为Demo的类包含以数组为参数的'compare_swap'函数,并检查排序的方向。因此,元素被交换。定义了另一个名为“ merge_vals”的函数,该函数遍历数组并使用特定值调用“ compare_swap”函数。

接下来,使用各种参数调用“ merge_vals”函数。定义了另一个名为“ sort_vals”的函数,该函数在函数内部以不同的值调用。然后这些排序的值

被合并。定义了一个名为“ print_vals”的静态函数,该函数将数组作为参数,并在数组的各个元素中运行“ for”循环,并将其打印在控制台上。

main函数定义一个数组和一个'up'变量的值。创建一个新的类对象,并在定义的数组上调用“ sort_now”函数。然后,输出将打印在控制台上。