算法原理:假設一個人沿列表從頭到尾走,如果發現有相鄰元素順序不對的就交換一下,然后后退一步,否則繼續往前走,當走到列表尾部時,所有元素就排好序了。
import random
def gnomeSort(lst):
? ? i = 0
? ? length = len(lst)
? ? while i < length:
? ? ? ? #回頭看,如果當前元素比前面的大或者相等,就繼續往前走
? ? ? ? if i==0 or lst[i-1]<=lst[i]:
? ? ? ? ? ? i += 1
? ? ? ? else:
? ? ? ? ? ? #如果當前元素比前面的小,就交換位置,然后后退一步
? ? ? ? ? ? lst[i-1], lst[i] = lst[i], lst[i-1]
? ? ? ? ? ? i -= 1
lst = list(range(20))
random.shuffle(lst)
print(lst)
gnomeSort(lst)
print(lst)
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态