Goodspeed

导航

烙饼排序算法

问题描述: 有一摞烙饼,因为一只手端着盘子,所以只能用另外一只手来给烙饼排序,将烙饼由大到小排好序。这样就要求我们在给烙饼排序的时候总是将最上面的N个烙饼一起翻转。如果最下面的烙饼是最大的,那么只需要解决上面的N-1个烙饼,同理可以最后到解决两个烙饼的排序。

#! /usr/bin/python
# coding=utf-8
import random

def main():
    arr = random.sample(xrange(100), 10)
    print arr
    n = []
    while arr:
        arr = reverse(arr)
        n.insert(0,arr.pop())
    print n

def reverse(arr):
    if len(arr) == 1: return arr

    maxint = max(arr)
    maxindex = arr.index(maxint)
    return arr[maxindex+1:][::-1] + arr[0:maxindex+1]
    
        
if __name__ == '__main__':
    main()
    
    

  

posted on 2013-02-01 16:58  Goodspeed  阅读(500)  评论(0编辑  收藏  举报