#用python实现对字符串的归并排序
def merge(l1,l2):# 归并函数 将两个已排好序的列表类型序列合并
i = 0
j = 0
r = []
while (i <=len(l1)-1) and (j <=len(l2)-1):
if ord(l1[i]) <= ord(l2[j]):
r.append(l1[i])
i += 1
else:
r.append(l2[j])
j += 1
print i,j
if i == len(l1):
while j <=len(l2)-1:
r.append(l2[j])
j +=1
elif j == len(l2):
while i <= len(l1)-1:
r.append(l1[i])
i +=1
else:
pass
return r
def sortl(l):#主排序函数,对一个已被转换为列表格式的字符串进行排序
if len(l)>1:
l1=l[:len(l)/2]
l2=l[len(l)/2:]
ll = merge(sortl(l1),sortl(l2))
else:
ll = l[:]
return ll
def fsort(s):#最终的排序函数,可对任意字符串进行排序(尚不支持非ascii)
return sortl(list(s))
总结:
* 思路清晰,不犯低级错误
* 列表访问,l[a:b]访问的是位于位置a至位置b-1的各元素,***l[a:a]=[],l[:len(l)]=l***
* l[len[l]]不存在
网友评论