Javascript 元素上的气泡排序

Javascript 元素上的气泡排序,javascript,arrays,sorting,bubble-sort,Javascript,Arrays,Sorting,Bubble Sort,我有一个表格,其中包含某个东西的理论速率(id=ratebaseX)和实际观测速率(id=rateseenX)。我有一个javascript,它在每一对中运行,并简单地计算差异(id=calcX) 计算完这个差值后,我想基于这个计算出的差值对calcIDs数组进行气泡排序。实际上,我不想更改calcIDs类中的html或任何东西,只想更改数组中的索引 对于测试,我将前三个数组元素转储到一个警报框中,因为我知道它们最初是无序的 function calcLikelihood(){ rate

我有一个表格,其中包含某个东西的理论速率(id=ratebaseX)和实际观测速率(id=rateseenX)。我有一个javascript,它在每一对中运行,并简单地计算差异(id=calcX)

计算完这个差值后,我想基于这个计算出的差值对calcIDs数组进行气泡排序。实际上,我不想更改calcIDs类中的html或任何东西,只想更改数组中的索引

对于测试,我将前三个数组元素转储到一个警报框中,因为我知道它们最初是无序的

function calcLikelihood(){
    ratebaseIDs = document.querySelectorAll('[id^="ratebase"]');
    rateseenIDs = document.querySelectorAll('[id^="rateseen"]');
    calcIDs = document.querySelectorAll('[id^="calc"]');

    for(i=0;i<calcIDs.length;i++){
        likelihood = Math.round((ratebaseIDs[i].innerHTML - rateseenIDs[i].innerHTML)*100)/100;
        calcIDs[i].innerHTML = likelihood;
        calcIDs[i].likelihood = likelihood;
    }
    //bubble sort based on likelihood
    for(i=0;i<calcIDs.length;i++){
        for(j=0;j<(calcIDs.length-1);j++){
            if(calcIDs[j].likelihood<calcIDs[j+1].likelihood){
                temp = calcIDs[j];
                calcIDs[j] = calcIDs[j+1];
                calcIDs[j+1] = temp;
            }
        }
    }
    alert("0) " + calcIDs[0].likelihood +"\n1) " + calcIDs[1].likelihood+"\n2) " + calcIDs[2].likelihood);
}
函数calcLikelihood(){
RateBaseId=document.querySelectorAll('[id^=“ratebase”]');
rateseenIDs=document.querySelectorAll(“[id^=“rateseen”]”);
calcIDs=document.querySelectorAll('[id^=“calc”]');

对于(i=0;i您的气泡排序正常,我检查了它:

var calcIDs=[{似然:84},{似然:56},{似然:68},{似然:81}];
//基于似然的冒泡排序

对于(i=0;要移动HTML元素本身,您必须删除它们,然后按正确的顺序将它们追加回去。除非这是一个必须实现冒泡排序的赋值,否则我想不出更糟糕的算法选择。如果您只是想对数组进行排序,那么最好的选择是使用sort()数组类的方法。@MattBurland-
删除它们,然后追加它们
-追加它们会将它们从原始位置删除,因此,这并不完全正确:DAlso不仅如@JonTrauntvein所说,还有更好的方法对数组进行排序,而不是自己实现冒泡排序(可能会出错),还有一些javascript库可以为您创建可排序表。@Neofish:w3schools很少是一个好链接。这些链接通常要好得多。