我正在努力提高自己的技能,我想我会尝试编写自己的小排序算法:
import random
from random import randint
int_list = []
for i in range(10): #Creates a 10-entry list of randon ints
int_list.append(random.randint(0,10))
print "Unsorted list:\t" + str(int_list)
def sorter(int_list):
for i in range(len(int_list)-1):
while int_list[i] > int_list[i+1]:
temp = int_list[i]
int_list[i] = int_list[i+1]
int_list[i+1] = temp
continue
return int_list
print "\"Sorted\" list:\t" + str(sorter(int_list))
当我运行这个脚本时,它只对列表的前两个条目进行排序。我对continue
的理解是,当while
语句是True
时,它会在while循环中不断循环。你知道吗
你的
while
实际上像if
一样运行,看起来你在试图bubble-sort而你没有正确地实现它(你应该一直迭代,直到迭代没有执行一次交换为止)-这就是为什么你没有真正排序。你知道吗第二,python的“交换”方式不是:
而是:
你的
return int_list
语句缩进太远了-它在for
循环中,因此你的函数在第一次迭代结束时退出。你知道吗还有
可以减少到
而
while
只会运行0或1次(您可以使用if
)。你知道吗另外,看起来您只是在执行冒泡排序的第一次传递-它会将最高值移到列表的末尾,但不会产生完全排序的列表。您需要另一个
for
循环来重复执行此操作(“冒泡”值)。你知道吗相关问题 更多 >
编程相关推荐