插入排序python版本,python循环使用的思考
# 插入排序
testLst = [1, 1, 1, 2, 5]
def cha(lst):
n = len(lst)
for i in range(1, n):
tmp = lst[i]
for j in range(i - 1, -1, -1):
if lst[j] <= tmp:
break
else:
lst[j + 1] = lst[j]
if j == 0 and lst[j] > tmp: #如果j已经到了0的位置,仍然没有找到比tmp小的元素,由于用的for循环,会自动跳出循环,那么就把tmp放在0这个位置,此时tmp是最小的//此处可以用while循环代替
lst[j] = tmp
else:
lst[j + 1] = tmp # 一旦发现<=tmp的地方,跳出循环,并把tmp方位当前未知的下一个位置
return lst
print(cha(testLst))
#用while写内层循环
def cha(lst):
n = len(lst)
for i in range(1, n):
tmp = lst[i]
j = i -1
while j >= 0:
if lst[j] <= tmp:
break
else:
lst[j + 1] = lst[j]
j -= 1
lst[j + 1] = tmp # 一旦发现<=tmp的地方,跳出循环,并把tmp方位当前未知的下一个位置
return lst
从以上的例子可以看出,python的for循环由于不像C和java那种可以多种条件控制,有时候用for循环会很不方便,且很容易出现错误,所以python语言考虑到灵活性,要多用while循环。