Pancake sort煎饼排序的分析以及java实现
Pancake sort也是排序算法其中的一种,之所以叫做pancake sort是因为有一个特殊的操作叫做flip(int[] A,int k)就是将数组A[0,k]进行翻转,pancake sort的时间复杂度是 O ( n 2 ) O(n^2) O(n2)的,我们通过两次翻转数组的操作来排序一个元素,我们首先找到最大的元素,先将这个元素通过一次翻转到数组的第一个位置,然后再通过一次翻转将这个元素翻转到最后一个位置上,然后这个元素我们就可以不用管了,然后再去处理这个处理这个元素之前的数组就可以了。
class Solution{
public void PancakeSort(int[] A){
if(A == null || A.length == 0) return ;
int largest = A.length;
int n = A.length;
for(int i = 0;i < n;i++){
int max = Integer.MIN_VALUE;
int maxIndex = -1;
for(int j = 0; j < largest;j++){
if(A[j] > max){
max = A[j];
maxIndex = j;
}
}
flip(A,maxIndex);
flip(A,largest-1);
largest--;
}
}
private flip(int[] A,int k){
int i = 0, j = k;
while(i < j){
int temp = A[i];
A[i++] =A[j];
A[j--] = temp;
}
}
}
这样我们的pancake sort就实现了。