Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

โปรแกรม Java สำหรับ Bitonic Sort


ใน 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("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' ผ่านองค์ประกอบของอาร์เรย์และพิมพ์บนคอนโซล

ฟังก์ชันหลักกำหนดอาร์เรย์และค่าสำหรับตัวแปร 'ขึ้น' มีการสร้างคลาสอ็อบเจ็กต์ใหม่และเรียกใช้ฟังก์ชัน 'sort_now' ในอาร์เรย์ที่กำหนดไว้ จากนั้นเอาต์พุตจะถูกพิมพ์ลงบนคอนโซล