前面我们讲解了耐心排序算法,今天我们来看一下代码的实现,直接上代码
#!/usr/bin/python
# -*- coding: utf-8 -*-
#耐心排序
def _patience_sort(the_list):
the_list_len = len(the_list)
if the_list_len <2:#0和1
print "无需排序"
return the_list
else:
new_list = []
#第一部分:数据入桶
for key, value in enumerate(the_list):
bucket_list = []
if key == 0:#第一次肯定放到第一个桶中
bucket_list.append(value)
new_list.append(bucket_list)
else:
is_ok = False
for a_key, a_value in enumerate(new_list):#遍历新序列的桶
if value <= a_value[0]:#如果取得的元素小于等于桶中第一个元素,则这个元素放到这个桶的最上面
a_value = [value]+a_value
new_list[a_key] = a_value
is_ok = True