我开始学习 * 数据结构和算法,* 并试图实现冒泡排序:
def BubbleSort(list):
for a in range(len(list)):
for b in range(len(list)):# I could start this loop from 1
if list[a]< list[b]: # to avoid comparing the first element twice
temp=list[a]
list[a]=list[b]
list[b]=temp
return list
字符串
我浏览了网络和书籍,但是没有找到冒泡排序的Python实现。上面的有什么问题吗?
3条答案
按热度按时间y4ekin9u1#
几件事:
1.算法将不总是正确排序;
1.从句法上看,它似乎是以相反的方式排序;
1.则花费两倍于执行冒泡排序所需的时间量;
1.它 * 不是 * 泡沫排序;以及
1.你最好不要在Python中使用变量
list
,dict
等等。因此,一个非常基本的实现是:
现在,我们可以通过在
len(data)-1-j
处停止来改进算法(近似地使算法以一半的时间工作),因为在每次迭代之后,气泡移动经过的最右边的元素被保证为最大值:但是使用冒泡排序是低效的--除了一些非常罕见的情况--最好使用更快的算法,如 QuickSort、MergeSort 和 TimSort(Python的内置排序算法)。
pkmbmrz72#
下面是实现
bubble sort:
的书籍的简短列表ryevplcw3#
你可以把for循环的索引从a + 1改为0,这样可以避免第一个元素与它自己进行比较,这样会更快一些。
使用swap函数交换list[a]和list[B]元素的值,而不是使用临时变量。
使用sorted函数检查列表是否已经排序,如果已经排序,则立即返回列表。