Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.02.2009, 14:49   #1
якут
Новичок
Джуниор
 
Регистрация: 19.02.2009
Сообщений: 2
По умолчанию Алгоритм антисортировки

Вобщем задача стоит такая: есть грубо говоря одномерный строковый массив. Причем строки в массиве могут повторяться. Задача состоит в том, чтобы отсортировать этот массив таким образом, чтобы свести к минимуму число пар рядом стоящих элементов с одинаковым содержимым. Под парой понимается : 1 и 2 эелемент , 3 и 4 эелементы , 5 и 6 эелементы и т.д. Кто-нибудь знает какую-либо теорию или алгоритм который может помочь в решении задачи?
якут вне форума Ответить с цитированием
Старый 19.02.2009, 15:31   #2
NeshSoft
Максим Николаев
Форумчанин
 
Аватар для NeshSoft
 
Регистрация: 15.02.2009
Сообщений: 170
По умолчанию

Могу посоветывать сначало упорядочить массив строк по алфовиту, потом заменить строки числами 1..n, причем, если подрят идут одинаковые строки, то их заменить одним и тем же числом, в итоге получиться, что нужно разупорядочить уже массив целых чисел - идущих подряд, ну а тут уже можно сообразить по поводу алгоритма - а в итоге провести обратную замену. Метод конечно будет медленный, но зато легко реализуемый, и надежный.
NeshSoft. Программирование на заказ для студентов. Delphi/Pascal. Подробнее на сайте neshsoft.narod.ru
NeshSoft вне форума Ответить с цитированием
Старый 19.02.2009, 17:31   #3
якут
Новичок
Джуниор
 
Регистрация: 19.02.2009
Сообщений: 2
По умолчанию

да, примерно так и предполагал. Спасибо большое за подтверждение мыслей.
якут вне форума Ответить с цитированием
Старый 19.02.2009, 19:28   #4
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

ИМХО делаеться все так [delphi]:
Код:
type
  TMas =array of string;;
Mas,R:TMas;
Z:array of TMas;
...
var
  i,j,m:integer;
  s:string;
begin
  ReadTMas(Mas);//продцедура чтения массива, ну там ввод... напишеш сам
  SortTMas(Mas);//сортируем... опять же пишеш сам ^_^
  j:=0;
  s:=Mas[j];
  For i:=1 to length(Mas)-1 do
  begin
    if Mas[i]<>Mas[j] then
    begin
      setlength(Z,length(z)+1);//увеличили Z на 1 элемент
      CopyTMas(Z[length(z)-1],Mas,j,i-1); {данная продецедура копирует элементы с j по i-1 (включительно) из Mas в Z[length(z)-1]... опять же сам напишеш}
      j:=i;
    end;
  end;
  setlength(Z,length(z)+1);
  CopyTMas(Z[length(z)-1],Mas,j,length(Mas)-1);//про последних нельзя забывать))))
  SortZ(Z);//сортирует массив Z по длинне его элементов (TMas) с переди самый длинный, опять же пишеш сам)))
  CopyTMas(R,Z[0],0,Length(Z[0])-1);
  m:=length(R)-1;
  for i:=1 to length(z)-1 do
  begin
    for j:=0 to length(z[i])-1 do
    begin
      if m=0 then m:=length(R)-1;
      Paste(R,Z[i][j],m-1);//продцедура вставляет в массив R элемент Z[i][j] (тобиш один элемент массив TMas'a) на позицию m-1 cо сдвигом прошлого элемента m-1 на позицию m и по цепной реакции...
      dec(m);
    end;
  end; 
//вот и смешали ))))
end;
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Криптографический алгоритм LT. Помощь студентам 1 12.11.2008 12:38
Алгоритм SunKnight Работа с сетью в Delphi 5 29.04.2008 15:24
Алгоритм Rifler Паскаль, Turbo Pascal, PascalABC.NET 3 30.03.2008 01:33