煎饼分类Java程序

煎饼分类是一种类似于选择分类的分类技术,即先对最大的元素进行分类,从而减小数组的大小,最后对所有元素进行分类。在煎饼分类中,其思想是通过使最少数量的反转来对数组元素进行分类。

以下是Java中Pancake排序的示例-

示例

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。数组开始排序,最大的元素放置在最后一个位置。这样,数组的大小减少了一个。在数组及其索引中找到最大元素。将变量分配给索引。现在调用“ flip_array”函数。对数组元素执行相同的操作,直到对所有元素进行排序。