2016-11-13 3 views
0

선택 정렬 방법을 사용하는 코드를 만들려고하는데 문제가 있습니다. 내 버튼을 누르면 아무 일도 일어나지 않습니다. 코드에서 두 번째 눈동자가있는 것이 틀린 점을 찾는 데 도움이 될 것입니다.배열 정렬 (자바 스크립트)

내 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을 문자열로 변환하면 어디에서 쓸 수 있습니까? - 나랑 벗겨 줘. 나는 아주 재미있어. – anon

+0

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

답변

2

선택 기능이 엉망입니다. 당신의 경우와 종류라는 표준 기능을, 프로그래머 :

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); 
} 

(자세한 내용은 화살표 함수를 참조)