JSFiddle - React, Tailwind, and code Playground

by TCloud

HTML

<div id="console"></div>

CSS

body, body * {
  color: #fff;
  background-color: #222233;
}

JavaScript

/*

Задача:
Сортировка по возрастанию методом выбора максимума.

Области сортировки:
2 и 3 квадрант.

*/

let isMax = function isMax(max, min) {
	if(max > min){
		return true
	}

	return false
}

/*
 * Функция для перемещения элементов матрицы.
 * Меняет элементы местами.
 */
let swap = function swap(matrix, x1, x2, y1, y2) {
	/*
	 * Меняем переменные местами.
	 */
	matrix[y1][y2] = [matrix[x1][x2], matrix[x1][x2] = matrix[y1][y2]][0]
	/*
	 * Возвращаем измененую матрицу.
	 */
	return matrix
}
/* 
 * Функция для сортировка по возрастанию методом выбора максимума.
 */
let sortQuickMax = function sortQuickMax(matrix) {

	/*
	 * Проверка на ввод данных.
	 * Функция вернет false в тх случаях, если
	 * 1) аргумент не массив (И)
	 * 2) длина переданного массива не четная. (ИЛИ)
	 * 3) длина массива первого элемента не четная. (ИЛИ)
	 *
	 */
	if(Array.isArray(matrix) && matrix.length % 2 != 0 || matrix[0].length % 2 != 0){
		return false
	}

	/*
	 * Определяем центр матрицы.
	 */
	let middle = Math.round(matrix.length / 2)

	/*
	 * Обход матрицы.
	 */
	matrix.map((row, i) => {

		row.map((cell, j) => {

			if( i < middle && j >= middle ) {
				/*
				 * Сортировка 2-го квадранта.
				 */
				if( (j + 1 > middle) && matrix[i][j + 1] != undefined && isMax(matrix[i][j], matrix[i][j + 1]) ){
        	document.getElementById("console").innerHTML += `<br>2sqr, horz,  i, j: ${matrix[i][j]}; i, j + 1: ${matrix[i][j + 1]} <hr>`
					swap(matrix, i, j + 1, i, j)
				}

				if( i + 1 < middle && matrix[i + 1] != undefined && isMax(matrix[i + 1][j], matrix[i][j]) ){
        	document.getElementById("console").innerHTML += `<br>2sqr, vert,  i, j: ${matrix[i][j]}; i + 1, j: ${matrix[i + 1][j]} <hr>`
					swap(matrix, i + 1, j, i, j)
				}

			}else if( i >= middle && j < middle ){
				/*
				 * Сортировка 3-го квадранта.
				 */
				if( j + 1 <= middle && matrix[i][j + 1] != undefined && isMax(matrix[i][j], matrix[i][j + 1]) ){
        	document.getElementById("console").innerHTML +=...