煎饼分拣

时间:2013-01-26 07:46:06

标签: algorithm sorting

我的任务有点麻烦;我接到了一个任务,想出自己解决煎饼问题的方法。

我的大部分代码都被删除了,除了这一部分(以下是伪代码):

//assuming input is an array of [0...n-1] size
int maxValue = -infinity
for int i <- 0 to n-1 do
{
    for int j <-i to n-1 do
    {
       if A[j] > maxValue
       {
          maxValue <- A[j]
          maxPos <- j
    if ((maxPos == n-1) && (maxPos > i))
    {
        flip(i) //flipping starting from index i
    }
    /*the following is the bit i'm stuck on
    i know that should be able to flip the max value IN the array 
    (but not the end) to the n-1 term. 
    On the next iteration of the loop, i flip the maxValue (now held in the last 
    element) into the slot that is either at the beginning of the array, or at the
    element closest to the elements already sorted */
    maxValue <- -infinity 

对不起,对于随机短码,我在输入时太早按了sumbit =(。

2 个答案:

答案 0 :(得分:0)

我认为你被infinity困住了。您可以将其视为large integer or long number

答案 1 :(得分:0)

煎饼排序:

煎饼分类是数量问题的口语术语,当刮刀可以插入烟囱中的任何一点并用于翻转其上方的所有煎饼时,按照大小排序无序的煎饼堆栈。

煎饼数是给定数量的煎饼所需的最大翻转次数。

flip(array,i):从0到i的反向数组。

伪码煎饼排序:

1)iMax =未排序数组中最大元素的索引。

在arr [0..unsorted_array_size -1]中查找最大元素索引的索引。

2)调用flip(array,iMax)

它会将数组的所有元素从0翻转到iMax索引。 最大的元素将是数组中的第一个元素。

3)调用flip(array,unsorted_array_size -1)

翻转完整的未排序数组,结果将最大元素放在未排序数组的末尾。

复杂性: 在每次翻转将花费O(n)时间的情况下执行总O(n)翻转操作。因此复杂度为O(n ^ 2)。

http://javaexplorer03.blogspot.in/2015/11/pancake-sort-in-java.html