2017-10-05 53 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>