Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   функция сортировки массива (https://javascript.ru/forum/misc/33222-funkciya-sortirovki-massiva.html)

againagain 14.11.2012 16:54

функция сортировки массива
 
Доброго времени суток, изучаю js сравнительно недавно.
Добрался до сортировки числовых значений массива с помощью функции:
function compareNumbers(n1, n2) 
	{
		if (n1 == n2) return 0;
		if (n1 > n2) 
			return 1;
		else 
			return -1;
	}

Наиболее доступный ответ, что я нашёл:

Цитата:

Меньше 0: элемент «a» будет помещен ранее(с меньшим индексом) «b»
Ноль: «a» и «b» одинаковы, сортировка не производится.
Больше 0: элемент «b» будет помещен ранее(с меньшим индексом) «a».
Но мне всё равно не ясно, как -1,0,1 в возврате формируют сортировку.

a_l 14.11.2012 21:07

againagain, вопрос ведь о методе sort() ?
Возможно это поможет:
function compareNumbers(n1, n2) {
  alert('Сравниваю '+n1+' c '+n2)
  if (n1 == n2) return 0;
  if (n1 > n2) return 1;
  else return -1;
}

bFree 14.11.2012 22:21

againagain,
Функция сортировки в JS по любому алгоритму берет два элемента и хочет узнать, какой из них больше: первый или второй.
Для того, чтобы узнать это, она скармливает эти два элемента другой фунцкии, которая должна сравнить их между собой (это как раз твоя функция).

Если функция сравнения вернет 0, то функция сортировки понимает, что два элемента равны
Если вернет 1, то первый элемент больше второго
Если -1, то первый элемент меньше второго.

В зависимости от этого, функция сортировки либо переставит эти элементы местами, либо сделает что-то еще (зависит от ее алгоритма).
Так она будет повторять много раз, пока не получит до конца отсортированный массив.

againagain 15.11.2012 09:27

да, речь шла о методе sort()
Теперь ясно, большое спасибо


Часовой пояс GMT +3, время: 19:24.