[JS] Arrays домашно, 5 задача


2

Здравейте,

Write a script to sort an array. Use the "selection sort" algorithm: Find the smallest element, move it at the first position, find the smallest from the rest, move it at the second position, etc.
Hint: Use a second array
 
Тази задача си стана (поне привидно) и така:
 
<pre><script>
 
    var arr = [];
     var temp = 0;
 
    for (k=0; k<20; k++)
    {
    arr[k] = Math.round(Math.random()*100);
    }
        document.writeln("Initial array: " + arr);
 
            for (var i in arr){
                for (j=0; j<arr.length; j++){
                var min = arr[j];
                if (arr[i] < min){     
                    min = arr[i];       
                    temp = arr[j];
                    arr[j] = arr[i];
                    arr[i] = temp;
                }
            }
        }
 
        document.writeln("Sorted array: " + arr);
 
    </script></pre>

Та въпросът ми е за какво ми е втори масив, какъвто hint има в условието?






Отговори



1
От втори масив нямаш нужда със сигурност.
Може обаче да оптимизираш алгоритъма си ако пускаш втория цикъл от i до arr.lenghth вместо всеки път от 0

от wnvko (3123 точки)


0
Пробвах и това, но ги сортира наобратно, от най-голямото към най-малкото :)

от topalkata (6442 точки)


0

Темата за домашното от JS Arrays e ТУК


от anilak (1134 точки)


0

Как ви се вижда тази конструкция:

arr.splice(idx, 1, arr.splice(i, 1, arr[idx]));
 
Поиграх си малко за да мина не само без втори масив, ами дори и без временна променлива, в която да пазя стойността когато сменям местата на 2 елемента.
 
Когато arr.splice трие елемент, то тя го връща като резултат. Него го ползвам като вход за втория splice.

от JulianG (5316 точки)


0
Ето и моя вариант.Уважавам мнения.
http://pastebin.com/J7RYkxEM

от TodorDimitrov (757 точки)