Сортировка змейкой массива Js

193
07 июля 2019, 16:20

Нужно отсортировать массив змейкой по такому принципу:

 =>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);
}
Answer 1

Была создана новая функция 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); 
}

READ ALSO
конвертор валют jQuery ,как получить значение из валюты из селект бокса

конвертор валют jQuery ,как получить значение из валюты из селект бокса

Пишу конвертор грн -> валюту которую выберет юзер из селект бокса как получить значение той валюты из json которую выберет пользователь из селекта...

178
Может ли MySQL вызвать внешнюю программу по триггеру?

Может ли MySQL вызвать внешнюю программу по триггеру?

Имеются ли какие нибудь способы по триггеру в MySQL вызвать например хранимую процедуру (выполнить в ней определенные действия с данными в таблицах)...

177