繁体   English   中英

实施短泡沫和泡沫排序

[英]Implementation of short bubble and bubble sort

冒泡排序

在上面的URL中清楚地写出,短气泡是气泡排序的一种修改,以减少通过次数。 因此,在我对这两种算法的实现中,我添加了一个计数器,该计数器计算通过次数,并且令人惊讶地两者都具有相同的数量。 通行证 这是我的代码:

def bubbleshort(mylist):
    flag= True
    passnum= len(mylist) -1
    counter = 0
    while flag and passnum > 0:
          flag = False

          for element in range(passnum):
                if mylist[element] > mylist[element + 1]:
                flag = True

                temp= mylist[element]
                mylist[element]= mylist[element+1]
                mylist[element + 1] = temp
                counter += 1
          passnum -= 1
    return mylist, counter

def bubble(yourlist):
    count=0
    for i in range(len(yourlist)-1, 0, -1):
        for swap in range(i):
            if yourlist[swap] > yourlist[swap + 1]:
                temp=yourlist[swap]
                yourlist[swap]=yourlist[swap + 1]
                yourlist[swap + 1]= temp
                count+= 1
    return yourlist, count

mylist = [20,30,40,90,50,60,70,80,100,110]
mylistx = [20,30,40,90,50,60,70,80,100,110]
sortedList, counter= bubbleshort(mylist)
sortList, count= bubble(mylistx)
print(sortedList,counter)
print(sortList,count)

此外,如果我将相同的列表传递给两个函数,则bubble函数产生零计数,但仍然给出一个排序列表。 所以有人可以告诉我什么时候修改的目的是什么。 传球是一样的。 他们可能有机会我的计数器执行错误,为什么我得到了错误的答案。

这取决于输入列表,这两个函数是否经历了相同的传递次数。

例如,像[9,1,2,3,4,5,6,7,8]这样的几乎排序的列表只需要两次通过短气泡功能,而常规需要8( n-1 )次通过泡沫功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM