Java 煎餅排序程式


煎餅排序是一種類似於選擇排序的排序技術,即先排序最大元素,從而縮小陣列大小,最終對所有元素進行排序。在煎餅排序中,其思想是透過最少的反轉次數來對陣列元素進行排序。

以下是 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”函式。對陣列元素執行相同的操作,直到所有元素都被排序。

更新於:2020年9月14日

591 次檢視

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.