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’函式。然後,輸出將列印在控制檯上。
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
安卓
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP