D&C的工作原理:
(1)找出基准条件,我一般默认第一个数为基准数
(2)确定如何缩小规模,使其符合基线条件的进行递归循环排序
例子1(无重复列表):
list = [5,6,3,8,6,9,4,3,2,1,7] #要排序的列表
def quickly_sort(list):
if len(list) < 2:
return list
else:
jizhunshu = list[0] #以每一次列表的第一个数为基准数
small_list = [i for i in lists[1:] if (i < jizhunshu)] #产生一个比基准数小的列表
big_list = [i for i in lists[1:] if (i > jizhunshu)] #产生一个比基准数大的表
sort_list = quickly_sort(small_list) + [jizhunshu] + quickly_sort(big_list) #注意基准数必须加[],使其还原为list
return sort_list #原列表中有2个3,排序后仅有一个3
quickly_sort(list)
例子2(有重复列表):
lists = [5, 6, 8, 9, 4, 3, 2, 1, 7, 3] #要排序的列表,假设我们在例子1里列表末尾加入了一个重复数字3,利用例子1排序后,重复的数字3就被排除掉了,仅留一个3.
def quickly_sort(lists):
if len(lists) < 2:
return lists
else:
jizhunshu = lists[0] #以每一次列表的第一个数为基准数
small_list = [i for i in lists[1:] if (i < jizhunshu) or (i == jizhunshu)] #产生一个比基准数小的列表,加入重复数字的录入
big_list = [i for i in lists[1:] if i > jizhunshu ] #产生一个比基准数大的表
sort_list = quickly_sort(small_list) + [jizhunshu] + quickly_sort(big_list) #注意基准数必须加[],使其还原为list
return sort_list
quickly_sort(lists)