2016-11-13 8 views
0

選択ソート方法を使用するコードを作成しようとしていますが、問題があります。私のボタンを押すと何も起こりません。私はコード上に目の第二のペアを持っていることが間違っているものを見つけるのに役立つだろうと思っています。配列を並べ替える(JavaScript)

私のswap()関数は正しいですか?私のselect()関数は正しいですか?私は間違って何をしていますか?すべての助けが歓迎です!

<input id="input1" type="number" min="5" max="1000" onchange="first(); sortButton();"> 

<p id="demo"></p> 

<!-- button appears here, once a value is entered into the input field --> 
<p id="buttons1" onclick="select();"></p> 


<p id="demo2"></p> 

<script> 


// once input1 value changes this outputs a random value less than N (value of input1) N times, then dumps out the random numbers in id="demo" 

var arr = []; 
function first() { 
var N = document.getElementById("input1").value; 
while(arr.length < N) 

{var randomnumber = Math.ceil(Math.random()*N); 
arr[arr.length] = randomnumber;} 
document.getElementById("demo").innerHTML = arr;} 


// Once input1 value changes, this buttons appears in id="buttons" 
function sortButton() {document.getElementById("buttons1").innerHTML = 
'<button type="button" onclick="select();">Select Sort</button>';} 


function swap(arr, i, min) { 
var temp = arr[i]; 
arr[i] = arr[min]; 
arr[min] = temp;} 


// meant to sort (selection sort method) the random numbers in id="demo" once the button is clicked 

function select() {var len = arr.length, min, i, j; 
for (i = 0; i < len; i++){min = i; for (j = i+1; j < len; j++){if (arr[j] < arr[min]){min = j;}} if (i != min){swap(arr, i, min);} } return arr;} 




</script> 
+0

インナーHtmlは文字列であると予想されます。 arr.join( "") –

+0

を使用してarrを文字列に変換します。どこに書きますか? - 私と一緒に裸の私は非常にjsの笑に新しいです – anon

+0

Blablabla.innerHTML = arr.join( ""); –

答えて

2

あなたの選択機能は混乱です。 Theresのあなたのためのことを行いソートと呼ばれる標準関数、:

function select(){ 
arr.sort(function(a,b){ 
//if a<b keep it, if not swap 
if(a<b){ 
    return 0; 
}else{ 
    return 1; 
} 
}); 

https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

あなたも短いことができ:

function select(){ 
arr.sort((a,b)=>a-b); 
} 

(詳細は矢印の機能を参照してください)