Нужно отсортировать массив змейкой по такому принципу:
=>max
<=
=>
<=min
Есть код, в нем завел 2 функции, на мин и макс. Объясните, пожалуйста, как и где в этом коде реализовать подобную сортировку. Заранее спасибо!
var n = prompt('Введите размерность таблицы: ');
function getRandomInt(min, max){//Функция для генерации случайного числа
return Math.floor(Math.random() * (max - min)) + min;
}
function Increase(a, b) {//Функция для сортировки массива по возрастанию
return a - b;
}
function Decrease(a, b) {//Функция для сортировки массива по убыванию
return b - a;
}
function CreateAnArray(rows,columns){ //Функция, которая создаёт двумерный массив
var arr = new Array();
for(var i=0; i<rows; i++){
arr[i] = new Array();
for(var j=0; j<columns; j++){
arr[i][j] = getRandomInt(0, 100);
}
}
return arr;
}
var myMatrix = CreateAnArray(n,n); //Вызов функции для создания массива
var elem = document.querySelector('#elemTwo');//Присваем переменной селектор
createTable(elem, n, n);//Вызываем функцию и передаем ей параметр n
function createTable(parent, rows, cols){ //Функция для вывода массива на странницу
var table = document.createElement('table');
for (var i = 0; i < rows; i++) {
var tr = document.createElement('tr');
for(var j = 0; j < cols; j++){
var td = document.createElement('td');
td.innerHTML=myMatrix[i][j]; // используем уже отсортированный массив
tr.appendChild(td);
}
table.appendChild(tr);
}
parent.appendChild(table);
}
Была создана новая функция SortAnArray, которая перебирает уже созданный массив любой размерности и создает на его базе новый. В зависимости от индекса переданного подмассива, а точнее от его остатка после деления на 2 мы выбираем: по убыванию или по возрастанию будем сортировать подмассив. Затем myMatrix перезаписываем на отсортированный массив, а дальше сам знаешь.
var n = prompt('Введите размерность таблицы: ');
function getRandomInt(min, max) { //Функция для генерации случайного числа
return Math.floor(Math.random() * (max - min)) + min;
}
function Increase(a, b) { //Функция для сортировки массива по возрастанию
return a - b;
}
function Decrease(a, b) { //Функция для сортировки массива по убыванию
return b - a;
}
function SortAnArray(arr) {
var newArr = [];
arr.forEach((item, index) => {
newArr.push(item.sort(index % 2 ? Decrease : Increase));
});
return newArr;
}
function CreateAnArray(rows, columns) { //Функция, которая создаёт двумерный массив
var arr = new Array();
for (var i = 0; i < rows; i++) {
arr[i] = new Array();
for (var j = 0; j < columns; j++) {
arr[i][j] = getRandomInt(0, 100);
}
}
return arr;
}
var myMatrix = CreateAnArray(n, n); //Вызов функции для создания массива
myMatrix = SortAnArray(myMatrix);
var elem = document.querySelector('body'); //Присваем переменной селектор
createTable(elem, n, n); //Вызываем функцию и передаем ей параметр n
function createTable(parent, rows, cols) { //Функция для вывода массива на странницу
var table = document.createElement('table');
for (var i = 0; i < rows; i++) {
var tr = document.createElement('tr');
for (var j = 0; j < cols; j++) {
var td = document.createElement('td');
td.innerHTML = myMatrix[i][j]; // используем уже отсортированный массив
tr.appendChild(td);
}
table.appendChild(tr);
}
parent.appendChild(table);
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости