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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2011, 01:26   #1
Kovax
Пользователь
 
Регистрация: 21.12.2010
Сообщений: 28
По умолчанию Сортировка Шейкера для строкового типа данных

Цель задачи состоит в сортировке букв по возрастанию. Имеется сортировка Шейкера для чисел по возрастанию:

Код:
Program ShakerSort;
Var A       : array[1..1000] of integer;
    N,i,j,p    : integer;       
    Min, Max : integer;
Begin
 {Определение размера массива A - N) и его заполнение}
 writeln('Введите количество элементов: ');
 readln(n);
 for i:=1 to n do begin
 writeln('Введите элемент массива: ');
 readln(a[i]);
 end;
 {сортировка данных}
 for i:=1 to n div 2 do
  begin
   if A[i]>A[i+1] then
   begin
    Min:=i+1;
    Max:=i;
   end
   else
   begin
    Min:=i;
Max:=i+1;
   end;
   for j:=i+2 to n-i+1 do
   if A[j]>A[Max] then
    Max:=j
   else
   if A[j]<A[Min] then
    Min:=j; 
   {Обмен элементов}
    P:=A[i];
    A[i]:=A[min];
    A[min]:=P;
    if max=i then
    max:=min;
    P:=A[N-i+1];
    A[N-i+1]:=A[max];
    A[max]:=P;
  end;
 {Вывод отсортированного массива A}
 writeln('Вывод отсортированного массива: ');
 for i:=1 to n do begin
 writeln(a[i]:5);
end;
End.
Как можно его преобразовать для строкового (буквенного) типа данных?
Заранее благодарен.
Kovax вне форума Ответить с цитированием
Старый 07.05.2011, 17:03   #2
Kovax
Пользователь
 
Регистрация: 21.12.2010
Сообщений: 28
По умолчанию

Может и реально сделать, но как к примеру сделать "A[N-i+1]" для букв?
Kovax вне форума Ответить с цитированием
Старый 07.05.2011, 17:07   #3
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

аналогично как и для цифр)))
Код:
Program ShakerSort;
Var A       : string;
    N,i,j   : integer; 
    p:char;      
    Min, Max : integer;
Begin
 {Определение размера массива A - N) и его заполнение}
 readln(a);
n:=length(a);
 {сортировка данных}
 for i:=1 to n div 2 do
  begin
   if A[i]>A[i+1] then
   begin
    Min:=i+1;
    Max:=i;
   end
   else
   begin
    Min:=i;
Max:=i+1;
   end;
   for j:=i+2 to n-i+1 do
   if A[j]>A[Max] then
    Max:=j
   else
   if A[j]<A[Min] then
    Min:=j; 
   {Обмен элементов}
    P:=A[i];
    A[i]:=A[min];
    A[min]:=P;
    if max=i then
    max:=min;
    P:=A[N-i+1];
    A[N-i+1]:=A[max];
    A[max]:=P;
  end;
 writeln('Вывод : ');
 writeln(a);
end;
End.
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 07.05.2011, 17:15   #4
Kovax
Пользователь
 
Регистрация: 21.12.2010
Сообщений: 28
По умолчанию

Большое спасибо, буду разбираться.
Kovax вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сортировка методом шейкера и пузырька Степан sapral Помощь студентам 1 12.01.2011 19:02
Сортировка двусвязного списка методом шейкера ioda1986 Помощь студентам 0 02.05.2010 00:31
переменная строкового типа Rustamel Microsoft Office Excel 4 19.04.2010 17:53
Файлы строкового типа (ПАСКАЛЬ) sir.andrey Помощь студентам 1 09.12.2009 14:33
Описать функцию CompressStr(S) строкового типа,выполняющую сжатие строки S Allen Iverson Паскаль, Turbo Pascal, PascalABC.NET 7 23.04.2009 01:07