首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >冒泡排序Python

冒泡排序Python
EN

Stack Overflow用户
提问于 2018-02-06 21:30:49
回答 2查看 959关注 0票数 0

我试着在Python中做冒泡排序,不做函数,不导入函数等。

到目前为止,我已经得到了这个,但现在我被难住了:p

代码语言:javascript
复制
array = [1, 42, 321, 44, 121, 61, 812, 71, 10, 11]
number = 1
ArrayIndex = 0
numchange = 0
TotalNumberofLoops = 10
OuterLoop = 0
InnerLoop = 0

while OuterLoop < TotalNumberofLoops:
  InnerLoop = OuterLoop + 1
  while InnerLoop < TotalNumberofLoops:
    if array[OuterLoop] < array[InnerLoop]:
      numchange = array[InnerLoop]
      array[OuterLoop] = array[InnerLoop]
      array[InnerLoop] = numchange

    InnerLoop=InnerLoop + 1
  print array
  OuterLoop = OuterLoop + 1

这将产生以下输出:

代码语言:javascript
复制
[812, 42, 321, 44, 121, 61, 812, 71, 10, 11]
[812, 812, 321, 44, 121, 61, 812, 71, 10, 11]
[812, 812, 812, 44, 121, 61, 812, 71, 10, 11]
[812, 812, 812, 812, 121, 61, 812, 71, 10, 11]
[812, 812, 812, 812, 812, 61, 812, 71, 10, 11]
[812, 812, 812, 812, 812, 812, 812, 71, 10, 11]
[812, 812, 812, 812, 812, 812, 812, 71, 10, 11]
[812, 812, 812, 812, 812, 812, 812, 71, 10, 11]
[812, 812, 812, 812, 812, 812, 812, 71, 11, 11]
[812, 812, 812, 812, 812, 812, 812, 71, 11, 11]

感谢您的任何解决方案!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-02-06 22:03:20

试试这个:

代码语言:javascript
复制
array = [1, 42, 321, 44, 121, 61, 812, 71, 10, 11]
number = 1
ArrayIndex = 0
numchange = 0
TotalNumberofLoops = 10
OuterLoop = 0
InnerLoop = 0

while OuterLoop < TotalNumberofLoops:
    InnerLoop = OuterLoop + 1
    while InnerLoop < TotalNumberofLoops:
        if array[OuterLoop] < array[InnerLoop]:
            array[OuterLoop], array[InnerLoop] = array[InnerLoop], array[OuterLoop]

        InnerLoop = InnerLoop + 1
    print(array)
    OuterLoop = OuterLoop + 1

通过这种方式,元素的交换更具pythonic风格,而且也是正确的。

票数 1
EN

Stack Overflow用户

发布于 2018-07-08 23:06:35

怎么样

代码语言:javascript
复制
   def bubble_sort(x):
        # bubble sort with early termination - O(N) for nearly sorted
        swapped = False
        if len(x) > 1:
            for i in range(len(x) - 1):
                    if x[i] > x[i + 1]:
                        swapped = True
                        x[i+1], x[i] = x[i], x[i+1]
            if swapped:
                return bubble_sort(x[0:-1])+[x[-1]]
        return x
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48644257

复制
相关文章

相似问题

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