Java
 Computer >> コンピューター >  >> プログラミング >> Java

バイトニックソート用のJavaプログラム


バイトニックソートでは、比較は事前定義されたシーケンス(バイトニックシーケンス)で行われ、ソートされるデータに依存しません。 BitonicSortJavaプログラムの例を見てみましょう-

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」関数が含まれています。したがって、要素は交換されます。配列を反復処理し、特定の値を使用して「compare_swap」関数を呼び出す「merge_vals」という名前の別の関数が定義されています。

次に、さまざまなパラメータを使用して「merge_vals」関数が呼び出されます。異なる値で関数内で呼び出される「sort_vals」という名前の別の関数が定義されています。次に、これらのソートされた値

マージされます。 「print_vals」という名前の静的関数が定義されています。この関数は、配列をパラメーターとして受け取り、配列の要素を介して「for」ループを実行し、コンソールに出力します。

main関数は、「up」変数の配列と値を定義します。新しいクラスオブジェクトが作成され、定義された配列で「sort_now」関数が呼び出されます。次に、出力がコンソールに出力されます。


  1. バイナリ挿入ソート用のJavaプログラム

    バイナリ挿入ソートは、バイナリ検索を使用して、反復ごとに特定のインデックスに要素を挿入するための適切な位置を見つけます。まず、要素を挿入する必要がある場所を見つけます。次に、要素は次の正しい位置に移動されます。これで、特定の要素がその位置に配置されます。 以下は、バイナリ挿入ソートのJavaコードです- 例 public class Demo{    void Cocktail_Sort(int my_arr[]){       boolean swapped = true;       int start =

  2. カクテルソート用のJavaプログラム

    カクテルソートは、要素が左から右に繰り返され、最大の要素が最初に正しい位置に移動されるバブルソートとは対照的に機能します。シェーカーソートでは、要素が交互に両方向(左と右)に繰り返されます。 以下は、カクテルソートのプログラムです- 例 public class Demo{    static int temp;    static void Cocktail(int a[], int n){       boolean swap = true;       int begin = 0,i;