from __future__ import print_function
def pancakesort(arr):
'''
煎饼排序(默认升序)
算法思想:
每次循环找到元素最大值,然后将其翻转到列表首位,
再对整个列表进行翻转,将它翻转到列表最后的位置。
每次循环就有一个元素归位,所以将待比较的元素总
数减一,即剔除归位的元素
'''
cur = len(arr)
while cur > 1:
# 找到列表中的最大值
mi = arr.index(max(arr[0:cur]))
# 翻转0到mi的元素
arr = arr[mi::-1] + arr[mi+1:len(arr)]
# 翻转整个列表
arr = arr[cur-1::-1] + arr[cur:len(arr)]
#列表待归位元素数减一
cur -= 1
return arr
if __name__ == '__main__':
try:
raw_input # Python 2
except NameError:
raw_input = input # Python 3
user_input = raw_input('Enter numbers separated by a comma:\n').strip()
unsorted = [ int(item) for item in user_input.split(',') ]
print(pancakesort(unsorted))
煎饼排序——python
最新推荐文章于 2022-02-20 16:56:59 发布