Bitonic Sort-এ, তুলনা পূর্বনির্ধারিত ক্রমানুসারে (Bitonic sequence), সাজানো ডেটার উপর নির্ভর করে না। বিটোনিক সর্ট জাভা প্রোগ্রাম -
এর একটি উদাহরণ দেখা যাকউদাহরণ
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
ডেমো নামের একটি ক্লাসে 'compare_swap' ফাংশন রয়েছে যা অ্যারেকে প্যারামিটার হিসেবে নেয় এবং বাছাই করার দিকটি পরীক্ষা করে। তদনুসারে, উপাদানগুলি অদলবদল করা হয়। 'merge_vals' নামে আরেকটি ফাংশন সংজ্ঞায়িত করা হয়েছে যেটি অ্যারের মাধ্যমে পুনরাবৃত্তি করে এবং নির্দিষ্ট মানগুলির সাথে 'তুলনা_swap' ফাংশনকে কল করে।
এরপরে, 'merge_vals' ফাংশনটি বিভিন্ন পরামিতি সহ কল করা হয়। 'sort_vals' নামে আরেকটি ফাংশন সংজ্ঞায়িত করা হয়েছে যেটিকে বিভিন্ন মান সহ ফাংশনের ভিতরে বলা হয়। তারপর এই সাজানো মান
একত্রিত করা হয়। 'print_vals' নামের একটি স্ট্যাটিক ফাংশনকে সংজ্ঞায়িত করা হয় যা অ্যারেটিকে প্যারামিটার হিসেবে নেয় এবং অ্যারের উপাদানগুলির মাধ্যমে 'for' লুপ চালায় এবং কনসোলে প্রিন্ট করে।
প্রধান ফাংশন 'আপ' ভেরিয়েবলের জন্য একটি অ্যারে এবং একটি মান সংজ্ঞায়িত করে। একটি নতুন ক্লাস অবজেক্ট তৈরি করা হয় এবং সংজ্ঞায়িত অ্যারেতে 'sort_now' ফাংশনটি কল করা হয়। তারপর, আউটপুট কনসোলে মুদ্রিত হয়।