from __future__ import print_function
def cocktail_shaker_sort(unsorted):
#cocktail shaker鸡尾酒调制器,估计是边喝酒边写的,就叫CS排序,
#冒泡排序的改版,可对比理解
#排序结果默认升序
#range(start, stop, step) 假设len(unsorted)=10,相当于依次取9,8,7,6···
for i in range(len(unsorted)-1, 0, -1):
swapped = False #哨兵,
#这个循环从后向前遍历,把最小元素移到第一个位置
for j in range(i, 0, -1):
if unsorted[j] < unsorted[j-1]: #小的元素前移
unsorted[j], unsorted[j-1] = unsorted[j-1], unsorted[j]
swapped = True
#这个循环从前向后遍历,把最大元素移到最后一个位置
for j in range(i):
if unsorted[j] > unsorted[j+1]: #大的元素后移
unsorted[j], unsorted[j+1] = unsorted[j+1], unsorted[j]
swapped = True
#经过这两个循环,每一趟都有两个元素到达最终位置
if not swapped:#如果swapped=false就代表没有发生交换,已经有序,跳出循环
return unsorted
if __name__ == '__main__':
try:
raw_input # Python 2
except NameError:
raw_input = input # Python 3
user_input = raw_input('输入待排序的数,用\",\"分隔:\n').strip()
#strip() 方法用于移除字符串头尾指定的字符(默认为空格)
unsorted = [int(item) for item in user_input.split(',')]
cocktail_shaker_sort(unsorted)
print(unsorted)
cocktail_shaker 排序——python(冒泡排序改版)
最新推荐文章于 2024-08-13 10:37:15 发布