![]() |
|
||||||||||
|
|||||
|
Регистрация: Jul 2008
Сообщений: 912
|
У меня вопрос по сортировке массива, как реализовать такое:
есть массив каждый элемент которого это пара чисел разделённых пробелом например: 0 8, 2 9, 3 10, 1 11, 4 20, 5 21, 7 22, 6 23, 0 4, 1 5, 5 6, 4 7, 1 12, 3 13, 7 14, 5 15, 3 16, 2 17, 6 18, 7 19, 2 0, 0 1, 4 2, 6 3 Последний раз редактировалось Sintesis; 24.06.2011 в 18:21. |
|
|||||
|
Ммм. RegExp? Или порезать массив на 2, и сортировать синхронно. (тут на самом деле, меня не стоит слушать...мне самому интересно как быстрее)
__________________
RTFM |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 912
|
Да, скорее всего прийдётся резать, но может есть ещё способы
|
|
|||||
|
Это что за структура данных такая? У Вас элемент типа String?
В любом случае, посмотрите в сторону Natural Sort Order. |
|
|||||
|
Регистрация: Jul 2008
Сообщений: 912
|
Gaen, наталкиваешь на мысль, но пока не понял... Допустим вырежу каждое последнее число из каждого элемента массива(по твоему коду) создам новый массив из этих чисел, в данном примере получится так:
8,9,10,11,20,21,22,23,4,5,6,7,12,13,14,15,16,17,18,19,0,1,2,3 Потом по числовому порядку рассортирую. И что? Пары-то разрушаться: 8-ка потеряет 0, 9 потеряет 2 и т.д. |
|
|||||
|
Регистрация: Jun 2011
Сообщений: 153
|
Цитата:
в первом у нас 8 поэтому пихаем из основного массива в новый т.е. 0 8 суём в array[8] (это к примеру) потом по циклу дальше у нас идёт 9 вставляем из основного 2 9 в новый массив array[9] и т.д. |
|
|||||
|
Регистрация: Mar 2006
Адрес: Ростов-на-Дону
Сообщений: 80
|
var array:Array = ["0 8", "2 9","3 10","1 11","4 20","5 21","7 22","6 23","0 4","1 5","5 6","4 7","1 12","3 13","7 14","5 15","3 16","2 17","6 18","7 19","2 0","0 1","4 2","6 3" ]; function comp(x:String, y:String):int{ if (valueOf(x) < valueOf(y)) return -1; else return 1; } function valueOf(s:String):int { return int(s.substr( s.indexOf(" ") + 1 )); } array.sort(comp); |
|
|||||
|
Регистрация: May 2007
Сообщений: 33
|
Ну такого массива и существовать не может [0 1,2 3...]. Компилятор сразу ошибку выдаст.
Или это массив строк ['0 1','2 3',...] или вложенные массивы [[0,1],[...],..] или массив объектов [{a:1,b:2},{...},...] в последнем случае сортируем просто через ...sortOn('b'); |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:40. |
|
|
« Предыдущая тема | Следующая тема » |
|
|