冒泡排序算法按降序排序项目-JavaScript

冒泡排序算法按降序排序项目-JavaScript,javascript,algorithm,sorting,bubble-sort,Javascript,Algorithm,Sorting,Bubble Sort,下面是我的冒泡排序代码,它只按降序对数组进行排序。然而,我只是试图通过提升来排序。请让我知道我哪里做错了 var a = [53, 11, 34, 12, 18]; for(var i = 0; i < a.length; i++) { for(var j=0; j < a.length; j++) { if(a[i] > a[j]) { var temp = a[i]; a[i] = a[j];

下面是我的冒泡排序代码,它只按降序对数组进行排序。然而,我只是试图通过提升来排序。请让我知道我哪里做错了

var a = [53, 11, 34, 12, 18];

for(var i = 0; i < a.length; i++) {
    for(var j=0; j < a.length; j++) {
        if(a[i] > a[j]) {
            var temp = a[i];
            a[i] = a[j];
            a[j] = temp;        
        }
    }
}

console.log("Array:: ", a);
var a=[53,11,34,12,18];
对于(变量i=0;ia[j]){
var-temp=a[i];
a[i]=a[j];
a[j]=温度;
}
}
}
log(“数组::”,a);

在正确的冒泡排序中,内部循环不应每次迭代所有值。您的内部循环必须从
i+1
开始:

for(var j=i+1; j < a.length; j++) {
for(var j=i+1;j
var a=[53,11,34,12,18];
对于(变量i=0;ia[j]){
var-temp=a[i];
a[i]=a[j];
a[j]=温度;
}
}
}

log(“Array::”,a);
只需交换语句
a[i]
而不是
a[i]>a[j]

var a = [53, 11, 34, 12, 18];

for(var i = 0; i < a.length; i++) {
    for(var j=0; j < a.length; j++) {
        if(a[i] < a[j]) {
            var temp = a[i];
            a[i] = a[j];
            a[j] = temp;        
        }
    }
}

console.log("Array:: ", a);
var a=[53,11,34,12,18];
对于(变量i=0;i
比较项目的唯一操作是
a[i]>a[j]
。你如何扭转这种关系?@Ryan我认为trincot建议的方法比你的交换评论更好。嗯,我略过了问题,没有注意到你实际上没有进行冒泡排序。通常会有一个
排序的
标志,在循环开始时重置,并设置是否执行交换,例如一个Θ(n)而不是Θ(n²)的最佳案例。您这里的选择排序实现不正确。顺便说一句,请尝试先按照Ryan的建议进行操作……我有点急于在这里给出完整的答案:)啊,是的,就是这种情况……最好的解决方案,而不是更改if语句