快速排序
# -*- coding: utf-8 -*- def quick_sort(q): if not q: return [] m = q.pop() left_q = [] right_q = [] for e in q: if e>m: right_q.append(e) else: left_q.append(e) left_result = quick_sort(left_q) right_result = quick_sort(right_q) return left_result + [m] + right_result if __name__ == "__main__": u""" 1、列表 2、字符串 3、树 4、图 """ import random q = [] for i in range(1,10): q.append(random.randint(1,100)) print 'init list=',q result = quick_sort(q) print 'sorted list=',result
合并排序
def merge_sort(s_list1,s_list2): result = [] while s_list1 and s_list2: q = s_list1[0] p = s_list2[0] if q<p: result.append(q) s_list1 = s_list1[1:] else: result.append(p) s_list2 = s_list2[1:] if s_list1: result.extend(s_list1) if s_list2: result.extend(s_list2) return result def merge_main_sort(s_list): length = len(s_list) if length <=1: return s_list s_list1 = s_list[0:length/2] s_list2 = s_list[length/2:] rs1 = merge_main_sort(s_list1) rs2 = merge_main_sort(s_list2) result = merge_sort(rs1,rs2) return result if __name__ == "__main__": import random c = [] for i in range(100): i_random = random.randint(1,1000) c.append(i_random) print 'before sort=="%s"'%c rs = merge_main_sort(c) print 'after sort=="%s"'%rs
插入排序
# -*- coding: utf-8 -*- def insert_sort(sorted_list,insert_list): u"sorted_list 是从小到大排列好了的队列" for e in insert_list: length = len(sorted_list) i_index = length #如果都比列表中的元素都大,则说明自己新插入的元素最大 for i in range(length): #找寻插入的位置 if e<=sorted_list[i]: i_index = i break sorted_list.insert(i_index,e) return sorted_list if __name__ == "__main__": import random d = [] for i in range(16): e = random.randint(1,100) d.append(e) print "init list-------",d sored_list = [] for index,elem in enumerate(d): sored_list = insert_sort(sored_list,[elem]) print "***",index+1,"->",sored_list,"->",elem print "result---------",sored_list