2016-11-13 3 views
0

Я пытаюсь построить код, который использует метод сортировки , но у меня проблемы. Когда я нажимаю свою кнопку, ничего не происходит. Я полагаю, что вторая пара глаз на коде поможет мне узнать, что случилось.Сортировка массивов (Javascript)

Является ли моя функция обмена() правильной? Является ли функция 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 в строку с помощью arr.join ("") –

+0

где бы я это написал? - голый со мной, я очень новичок в js lol – 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); 
} 

(см функции стрелки для получения дополнительной информации)

Смежные вопросы