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

関連する問題