首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >短气泡和气泡排序的实现

短气泡和气泡排序的实现
EN

Stack Overflow用户
提问于 2016-10-28 16:08:11
回答 1查看 1.1K关注 0票数 1

气泡分类

在上面的URL中,很清楚地写到,短气泡是对冒泡排序的一种修改,以减少传球次数。因此,在实现这两种算法时,我增加了一个计数器,它计算传球的次数,令人惊讶的是,两者都有相同的数字。一张通行证。这是我的代码:

代码语言:javascript
复制
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)

另外,如果我把相同的列表传递给这两个函数,气泡函数会产生零计数,但仍然会给出一个排序列表。所以,谁能告诉我,当否定的时候,修改的目的到底是什么?通行证是一样的。他们也许是我执行计数器错误的机会,这也是我为什么得到错误答案的原因。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-28 16:27:39

这实际上取决于输入列表,这两个函数是否经过相同的传递次数。

例如,像[9,1,2,3,4,5,6,7,8]这样的几乎排序的列表对于短气泡函数只需要两次传递,而对于常规的泡函数总是需要8 (n-1)传递。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40309042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档