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

Black Dragon 18.04.2013 17:32

Функция сортировки на js
 
Подскажите пожалуйста, может знает кто. Как отсортировать массив(многомерный) вида:
var team = [
["team1",300],
["team2",800],
["team3",900],
["team4",1000]]
(сортируем конечно же по числовому значению)
Допустим, он уже отсортирован по возрастанию:
function new(a, b) { 
    if (a[1] > b[1])
        return 1;
    else if (a[1] < b[1])
        return -1;
    else
        return 0;
}

team.sort(new)


Можно ли сделать так чтобы индексы массива шли таким образом:
если длина массива=16(ну на самом деле там 1024 только долго писать:D) то
[0][15][1][14][2][13][3][12][4][11][5][10][6][9][7][8]
Подскажите кто знает) Никак алгоритм не могу понять который будет задействован в цикле) Наведите на мысли хотя бы)

tsigel 18.04.2013 17:36

я бы взял и создал второй массив и 2 функции запускающиеся поочереди

одна берет максимальное значение из массива, кладет его в новый массив и удаляет найденный элемент, вторая то-же самое, только с наименьшим элементом.

Повторять пока в оригинальном массиве не кончатся элементы

Black Dragon 18.04.2013 17:38

через split? не получается ) Пробовал массивы разделять,что-то всё равно неверно делаю)

tsigel 18.04.2013 17:39

При чем тут split?

tsigel 18.04.2013 17:41

Цитата:

Сообщение от Black Dragon
new

это у вас переменная?

Black Dragon 18.04.2013 17:44

Цитата:

Сообщение от tsigel (Сообщение 246958)
При чем тут split?

Ну я делил уже отсортированный массив пополам
И получалось 2 массива
к примеру:
один с индексами от 0 до 15
второй с индексами от 15 до 31
а потом вставлял поочерёдно как мне надо:
0,31,1,30 и т д
а хочется циклом)

Black Dragon 18.04.2013 17:48

Фу ты какой split,совсем мозги текут,splice конечно

tsigel 18.04.2013 17:50

а не проще по другому отсортировать массив, чем заморачиваться с таким выводом?

nikita.mmf 18.04.2013 17:52

var list = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
var res = [], 
	first = true;
while ( list.length ) {
	res.push( first ? list.shift() : list.pop() );
	first = !first;
}
alert( res )

tsigel 18.04.2013 17:53

nikita.mmf,
Ага, это я и имел в виду.


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