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

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

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

Регистрация: Mar 2009
Сообщений: 357
По умолчанию поиск дупликатов в массиве и расстановка их без повторений

есть массив с повторяющимися элементами. некоторые их них могут следовать друг за другом (т.е. два одинаковых элемента расположены рядом). как можно отсортировать массив так, чтобы между двумя одинаковыми элементами стоял хотя бы один отличающийся?

пока есть функция, которая перебирает массив в цикле и если i == i + 1 извлекает i из массива, ставит его в конец, запускает эту же функцию и break. но проблема в том, что иногда возникает переполнение стека (наверное потому, что в конце массива скапливаются два одинаковых элемента и функция запускается бесконечно).


Последний раз редактировалось loover; 02.12.2011 в 21:17.
Старый 02.12.2011, 21:26
BezDelnik вне форума Посмотреть профиль Отправить личное сообщение для BezDelnik Найти все сообщения от BezDelnik
  № 2  
Ответить с цитированием
BezDelnik

Регистрация: Jul 2008
Сообщений: 80
Отправить сообщение для BezDelnik с помощью ICQ
Код AS3:
var elem:*;
for var i:int=1; i<array.length; i++) {
   if(array[i-1] == array[i]) {
      elem = array[i];
      array.splice(i, 1);
      if(elem != array[0]) {
         array.unshift(elem);
      } else {
         for(var j:int=1; j<array.length; j++) {
           if(array[j-1] != elem && array[j] != elem) {
               array.splice(j, 0, elem);
               elem = null;
               break;
           } 
         }
         if(elem) {
            if(array[array.length - 1] != elem) {
               array.push(elem);
            } else {
               // хз куда его в таком случае :)
            }
         }
      }
   }
}
в общих чертах как то так.. но нужно еще учесть что может не быть подходящего места куда нужно вставить элемент


Последний раз редактировалось BezDelnik; 02.12.2011 в 21:34.
Создать новую тему Ответ Часовой пояс GMT +4, время: 04:17.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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