Exercise:函数应用于排序

exercise1: 用函数实现冒泡排序

def payxu(list):
for i in range(1,len (list)):
for j in range(0,len(list)-i):
if list[j]>list[j+1]:
tmp=list[j]
list[j]=list[j+1]
list[j+1]=tmp

return list


list =[5,6,9,10,7,7]
print payxu(list)

 

issue 1:为何用range去遍历list长度时不能从0开始?

 

 

exercise2:用函数实现快速排序(递归)

def payxu(total=[ ]):
if len(total)<=1:
return total
key=total[0]
total_l=[ ]
total_r=[ ]
total_m=[ ]
for i in total:
#for i in range(1, len(total)) 这时i是索引
#for i in total 这时i是total里面的元素而不是索引
if i<key:
total_l.append(i)
elif i>key:
total_r.append(i)
else:
total_m.append(i)

total_l=payxu(total_l)
total_r=payxu(total_r)
return total_l+total_m+total_r


total =[5,6,9,10,7,7,50,76]
print payxu(total)

 

issue1:起始循环时应做一个空值判断,不然当执行至total[] 时,循环会超出索引范围,当total=1时,也无需执行循环语句,直接返回total值即可,故加了

if len(total)<=1:
return total

若去掉这一部分,会报IndexError: list index out of range

issue 2:

不同的循环条件所定义的i值表示的含义不同:

#for i in range(1, len(total)) 这时i是索引
#for i in total 这时i是total里面的元素而不是索引

今天结束了函数的学习,晚上回去完成此2个练习,并贴上练习成果。

posted @ 2016-01-12 17:59  Janice_Zhong  阅读(284)  评论(0编辑  收藏  举报