Есть недоделанная функция сортировки, которая должна находить минимальный элемент массива и засовывать его в новый массив. Так как я не знаю, как удалить предыдущий минимальный эллемент, функция выдает массив из одного самого минимального числа из данного ей массива(например [44, 5, 2, 6, 3]
она выдает [2, 2, 2, 2, 2]
, вместо [2, 3, 5, 6, 44]
)
Мне нужно дополнить/подправить код ниже, а не новый или сокращенный вариант. Я хочу понять, как это работает через функции и циклы, сколько только я разных способов не перепробовал - все напрасно:
function sort(arr) {
var sorted = [];
var min = Infinity;
for (j = 0; j < arr.length; j++) {
for (var i = 0; i < arr.length; i++) {
if (arr[i] < min ) {
min = arr[i];
}
}
sorted.push(min);
}
return sorted;
}
var mins = []; //сюда будем записывать минимумы
//массив массивов
var arr = [
[10, 1, 5, 3, 6],
[65, 21, 45, 32, 16],
[300, 20, 25, 78, 6015],
];
var absMin = arr[0][0]; //мимимум по всем строкам
for (var i = 0; i < arr.length; i++) {
var row = arr[i];
//поиск минимума в строке
var min = row[0];
for (var j = 0; j < row.length; j++) {
var num = row[j];
if (num < min) min = num;
if (num < absMin) absMin = num;
}
mins.push(min);
}
document.write('Минимальные элементы в каждой строке:<br> [' + mins.join(', ') + ']');
document.write('<hr>');
document.write('Абсолютный мимимум:<br>' + absMin);
Демонстрация работы тут https://codepen.io/lukas-pierce/pen/MJdmWm
Сразу не понял постановку задачи:
var nums = [44, 5, 2, 6, 3];
nums.sort(function(a, b){ return a - b; });
document.write('[' + nums.join(', ') + ']');
рабочий пример тут https://codepen.io/lukas-pierce/pen/jyomyB
Так что ли?
console.info([44, 5, 2, 6, 3].sort((a, b) => a > b));
Не надо создавать велосипед в данном случае.
Будет тормозить (относительно нативной реализации) и поддерживать сложно.
Но всё же:
let arr = [44, 5, 2, 6, 3];
const sort = a => {
let len = a.length - 1;
// Проход каждому элементу
for(let i = 0; i < len; i++)
// Проводим элемент по массиву
for(var e = 0; e < len - i; e++)
// Если элемент больше следующего
if(a[e] > a[e + 1])
// То флипаем его (меняем местами)
[a[e], a[e + 1]] = [a[e + 1], a[e]];
return a;
};
console.info(sort(arr));
<textarea rows="5" name="source" placeholder="Введите элементы массива через запятую">44, 5, 2, 6, 3</textarea>
<br>
<button name="do_sort">Выполнить сортировку</button>
<br>
<br>
<h2>Результат</h2>
<textarea rows="5" name="result"></textarea>
<script>
var btn = document.querySelector('button[name="do_sort"]'),
source = document.querySelector('textarea[name="source"]'),
result = document.querySelector('textarea[name="result"]');
btn.onclick = function() {
try {
var arr = JSON.parse("[" + source.value + "]");
result.value = BubbleSort(arr).join(', ');
} catch (e) {
alert("Ошибка в исходных данных");
}
};
/** сортировка методом пузырька
* @param A - массив, который нужно отсортировать по возрастанию
*/
function BubbleSort(A) {
var n = A.length;
for (var i = 0; i < n - 1; i++) {
for (var j = 0; j < n - 1 - i; j++) {
if (A[j + 1] < A[j]) {
var t = A[j + 1];
A[j + 1] = A[j];
A[j] = t;
}
}
}
return A; // На выходе сортированный по возрастанию массив A.
}
</script>
Ссылка на рабочий пример https://codepen.io/lukas-pierce/pen/EZzEEx
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть директива, суть которой скрывать элемент если юзер это ресторанТак вот, это работает только тогда когда в дочернем блоке нету ng-show, т
Приветствую! Дело в том, что в live preview, или если просто забросить html в браузер, все отображается нормально, но вот я загрузил страницу на сервер...