用于Bitonic Sort的Java程序
在BitonicSort中,比较是按预定义的顺序(Bitonic顺序)进行的,而不取决于要排序的数据。让我们看一下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("该类的对象已创建。");
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”函数。然后,输出将打印在控制台上。