Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.06.2011, 02:26
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 1  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
По умолчанию Особая сортировка массива

У меня вопрос по сортировке массива, как реализовать такое:
есть массив каждый элемент которого это пара чисел разделённых пробелом например:
Код AS3:
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
нужно, что-б такой массив отсортировался по порядку второго числа из пары, сама пара не должна измениться. Вот какой массив требуется:
Код AS3:
 2 0,
 0 1,
 4 2,
 6 3,
 0 4,
 1 5,
 5 6,
 4 7,
 0 8,
 2 9,
 3 10,
 1 11,
 1 12,
 3 13,
 7 14,
 5 15,
 3 16,
 2 17,
 6 18,
 7 19,
 4 20,
 5 21,
 7 22,
 6 23,


Последний раз редактировалось Sintesis; 24.06.2011 в 18:21.
Старый 24.06.2011, 02:36
S-ed вне форума Посмотреть профиль Отправить личное сообщение для S-ed Найти все сообщения от S-ed
  № 2  
Ответить с цитированием
S-ed
 
Аватар для S-ed

Регистрация: Jul 2001
Адрес: SPb.RU
Сообщений: 148
Отправить сообщение для S-ed с помощью ICQ
Ммм. RegExp? Или порезать массив на 2, и сортировать синхронно. (тут на самом деле, меня не стоит слушать...мне самому интересно как быстрее)
__________________
RTFM

Старый 24.06.2011, 02:55
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 3  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
Да, скорее всего прийдётся резать, но может есть ещё способы

Старый 24.06.2011, 03:25
surlac вне форума Посмотреть профиль Отправить личное сообщение для surlac Найти все сообщения от surlac
  № 4  
Ответить с цитированием
surlac
 
Аватар для surlac

блогер
Регистрация: Nov 2010
Сообщений: 143
Записей в блоге: 1
Цитата:
Сообщение от Sintesis Посмотреть сообщение
каждый элемент которого это пара чисел разделённых пробелом например
Это что за структура данных такая? У Вас элемент типа String?

В любом случае, посмотрите в сторону Natural Sort Order.

Старый 24.06.2011, 03:39
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 5  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Имхо регуляркой проще
Код AS3:
function getValue(element:String):int{
    return int(element.match(/\d+$/)[0]);
}//getValue
__________________
тонкий тролль, осеянный благодатью

Старый 24.06.2011, 17:30
Sintesis вне форума Посмотреть профиль Отправить личное сообщение для Sintesis Найти все сообщения от Sintesis
  № 6  
Ответить с цитированием
Sintesis
 
Аватар для Sintesis

Регистрация: Jul 2008
Сообщений: 912
Цитата:
Сообщение от Gaen Посмотреть сообщение
Имхо регуляркой проще
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 и т.д.

Старый 24.06.2011, 17:41
DJDrugsounD вне форума Посмотреть профиль Отправить личное сообщение для DJDrugsounD Найти все сообщения от DJDrugsounD
  № 7  
Ответить с цитированием
DJDrugsounD
 
Аватар для DJDrugsounD

Регистрация: Jun 2011
Сообщений: 153
Цитата:
Сообщение от Sintesis Посмотреть сообщение
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 и т.д.
почему же! потом создаём ещё один массив и циклом проходем по предыдущему
в первом у нас 8 поэтому пихаем из основного массива в новый т.е. 0 8 суём в array[8] (это к примеру)

потом по циклу дальше у нас идёт 9 вставляем из основного 2 9 в новый массив array[9]
и т.д.

Старый 24.06.2011, 17:48
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 8  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
И что?
И получить массив индексов, если сортируем Array
__________________
...вселенская грусть

Старый 24.06.2011, 17:53
nuToH вне форума Посмотреть профиль Отправить личное сообщение для nuToH Найти все сообщения от nuToH
  № 9  
Ответить с цитированием
nuToH
 
Аватар для nuToH

Регистрация: Mar 2006
Адрес: Ростов-на-Дону
Сообщений: 80
Код AS3:
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);

Старый 24.06.2011, 17:58
Bacrilio вне форума Посмотреть профиль Отправить личное сообщение для Bacrilio Найти все сообщения от Bacrilio
  № 10  
Ответить с цитированием
Bacrilio

Регистрация: May 2007
Сообщений: 33
Ну такого массива и существовать не может [0 1,2 3...]. Компилятор сразу ошибку выдаст.
Или это массив строк ['0 1','2 3',...] или вложенные массивы [[0,1],[...],..] или массив объектов [{a:1,b:2},{...},...] в последнем случае сортируем просто через ...sortOn('b');

Создать новую тему Ответ Часовой пояс GMT +4, время: 22:40.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 22:40.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.