Java 位排序程序


在位次排序中,比较是按照预定义的序列(位次序列),与要排序的数据无关。让我们看一个位次排序 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("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);
   }
}

输出

The object of the class has been created.
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’循环,并在控制台上打印它。

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

更新于:04-07-2020

170 次浏览

开启您的职业生涯

完成课程获得认证

开始
广告
© . All rights reserved.