煎饼排序的 Java 程序
java 8server side programmingprogramming
煎饼排序是一种类似于选择排序的排序技术,即先对最大元素进行排序,从而减小数组的大小,最终对所有元素进行排序。煎饼排序的思想是通过最少的反转次数对数组元素进行排序。
以下是 Java 中煎饼排序的示例 −
示例
import java.io.*; public class pancake_sorting { static void flip_array(int my_arr[], int i) { int temp, beg = 0; while (beg < i) { temp = my_arr[beg]; my_arr[beg] = my_arr[i]; my_arr[i] = temp; beg++; i--; } } static int find_index(int my_arr[], int n) { int max_ele, i; for (max_ele = 0, i = 0; i < n; ++i) if (my_arr[i] > my_arr[max_ele]) max_ele = i; return max_ele; } static int pancake_sort(int my_arr[], int n) { for (int curr_size = n; curr_size > 1; --curr_size) { int max_ele = find_index(my_arr, curr_size); if (max_ele != curr_size - 1) { flip_array(my_arr, max_ele); flip_array(my_arr, curr_size - 1); } } return 0; } public static void main(String[] args) { int my_arr[] = { 67, 43, 89, 11, 23, 0, 98, 102, 4 }; int arr_len = my_arr.length; pancake_sort(my_arr, arr_len); System.out.println("The sorted array is : "); for (int i = 0; i < arr_len; i++) System.out.print(my_arr[i] + " "); System.out.println(""); } }
输出
The sorted array is : 0 4 11 23 43 67 89 98 102
解释
当在主函数中定义一个未排序的数组时,‘pancake_sort’ 会将该数组作为参数,并对其进行排序。该数组仅执行一个翻转操作,即 ‘flip_array’。
在此函数中,数组从元素 0 反转到数组中的特定元素。目标是通过最少的反转次数对数组进行排序。这类似于选择排序,将最大的元素逐个放置在末尾,以使数组大小减少 1。数组开始排序,并将最大的元素放置在最后位置。这样,数组的大小减少了 1。找到数组中的最大元素及其索引。将索引赋值给一个变量。现在调用 ‘flip_array’ 函数。对数组元素执行相同的操作,直到所有元素都排序完毕。