2017-10-05 76 views
1

我是JavaScript新手,並且使用DOM,因此請耐心等待。將排序後的數組輸出到主元素

我有一個名爲num的數組,我想排序和顯示。排序是一種選擇排序,它返回所需的移動次數。

我可以顯示未排序的數組,但不知道如何調用我的排序函數,然後將排序後的數組顯示到屏幕上。我的代碼如下:

function fn(a, b) { 
 
    if (a < b) 
 
    return true; 
 
} 
 

 
function selection(list, fun) { 
 
    var min, temp, count, 
 
    len = list.length; 
 
    for (var i = 0; i < len; i++) { 
 
    min = i; 
 
    for (var j = i + 1; j < len; j++) { 
 
     if (fun(list[j], list[min])) { 
 
     min = j; 
 
     } 
 
    } 
 
    temp = list[i]; 
 
    list[i] = list[min]; 
 
    listlist 
 
    list[min] = temp; 
 
    count += 3; 
 
    } 
 
    return count; 
 
} 
 

 
var num = [10, 1, 3, 5, 2, 9, 8, 6, 7, 4]; 
 

 
var demoP = document.getElementById("content"); 
 

 
{ 
 
    var html = ""; 
 
    html += "Original:" + num + "<br>"; 
 
    selection(num, fn); 
 
    html += "Sorted:" + num + "<br>"; 
 
} 
 

 
demoP.innerHTML = html;
<div id="content"></div>

+0

這是個挑戰方面這是需要我做什麼樣的方法。 – retrogirl19

+0

這是我正在做的一項要求,我意識到這不是做這件事的最聰明的方法。但它是需要的。 – retrogirl19

+0

沒有變量'arr',所以會出錯。那應該是什麼? – Barmar

回答

0

arr是不確定的,你應該使用list代替。返回count返回操作數(初始化後),返回list。由於list是本地函數,因此需要將num設置爲函數調用的返回值。

<span id='content'/> 
 
<script> 
 
function fn(a, b) { 
 
    if (a < b) 
 
    return true; 
 
} 
 

 
function selection(list, fun) { 
 
    var min, temp, count=0, 
 
    len = list.length; 
 
    for (var i = 0; i < len; i++) { 
 
    min = i; 
 
    for (var j = i + 1; j < len; j++) { 
 
     if (fun(list[j], list[min])) { 
 
     min = j; 
 
     } 
 
    } 
 
    temp = list[i]; 
 
    list[i] = list[min]; 
 

 
    list[min] = temp; 
 
    count += 3; 
 
    } 
 
    return list; 
 
} 
 

 
var num = [10, 1, 3, 5, 2, 9, 8, 6, 7, 4]; 
 

 
var demoP = document.getElementById("content"); 
 

 

 
    var html = ""; 
 
    html += "Original:" + num + "<br>"; 
 
    num= selection(num, fn); 
 
    html += "Sorted:" + num + "<br>"; 
 

 

 
demoP.innerHTML = html; 
 
</script>