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”函数。对数组元素执行相同的操作,直到所有元素都被排序。
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP