烙饼排序算法
问题描述: 有一摞烙饼,因为一只手端着盘子,所以只能用另外一只手来给烙饼排序,将烙饼由大到小排好序。这样就要求我们在给烙饼排序的时候总是将最上面的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()