Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   поиск дупликатов в массиве и расстановка их без повторений (http://www.flasher.ru/forum/showthread.php?t=172148)

loover 02.12.2011 21:07

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

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

BezDelnik 02.12.2011 21:26

Код 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 {
              // хз куда его в таком случае :)
            }
        }
      }
  }
}

в общих чертах как то так.. но нужно еще учесть что может не быть подходящего места куда нужно вставить элемент


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

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