快速排序
# -*- 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