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

Javascript:冒泡排序
EN

Stack Overflow用户
提问于 2016-06-15 00:19:52
回答 16查看 30.1K关注 0票数 3

我用JS做了一个冒泡排序算法(sorta)。它有时会起作用,但问题是它只对数组迭代一次。下面是我的代码:

代码语言:javascript
复制
function bubble(arr) {
  for (var i = 0; i < arr.length; i++) {
    if (arr[i] > arr[i + 1]) {
      var a = arr[i]
      var b = arr[i + 1]
      arr[i] = b
      arr[i + 1] = a
    }
  }
  return arr;
}
EN

回答 16

Stack Overflow用户

发布于 2016-06-15 00:40:45

请看下面的顺序:

代码语言:javascript
复制
[5, 4, 3, 2, 1]

现在,假设您需要使用冒泡排序按升序对其进行排序。

因此,您迭代数组并交换其他排序的相邻元素。

以下是迭代完成后您将获得的结果

代码语言:javascript
复制
[4, 3, 2, 1, 5]

现在,如果你再次这样做,你会得到这样的结果:

代码语言:javascript
复制
[3, 2, 1, 4, 5]

同样,您需要重复足够多次的迭代才能将其完全排序。这意味着你需要2个嵌套的循环。内循环用于迭代数组,外循环用于重复迭代。

请参阅this文章的分步示例。

票数 2
EN

Stack Overflow用户

发布于 2016-06-15 00:27:37

您需要一个内部循环来正确完成排序:

代码语言:javascript
复制
function bubble(arr) {
      var len = arr.length;
    
      for (var i = 0; i < len ; i++) {
        for(var j = 0 ; j < len - i - 1; j++){ // this was missing
        if (arr[j] > arr[j + 1]) {
          // swap
          var temp = arr[j];
          arr[j] = arr[j+1];
          arr[j + 1] = temp;
        }
       }
      }
      return arr;
    }

document.write(bubble([1,9,2,3,7,6,4,5,5]));

票数 1
EN

Stack Overflow用户

发布于 2018-08-18 20:49:52

代码语言:javascript
复制
var array = [6,2,3,7,5,4,1];
function bubbleSort(arr) {
    for(let j=0;j<arr.length;j++) {
        for(let i = 0; i < arr.length; i++) {
            if(arr[i]>arr[i+1]) {
                var temp = arr[i];
                arr[i] = arr[i+1];
                arr[i+1] = temp;
            }
        }
    }      
    return arr;
}
console.log(bubbleSort(array));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37817334

复制
相关文章

相似问题

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