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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2016, 11:56   #1
dcLout
Пользователь
 
Регистрация: 14.10.2009
Сообщений: 19
По умолчанию Сортировка строки методом Боуза-Нельсона

Доброго времени суток друзья. Помогите кто может. Весь интернет уже облазил. Суть задачи. Нужно отсортировать строку методом Боуза-Нельсона. Кто нибудь знаком с этим методом? Помогите кодом кто может.
dcLout вне форума Ответить с цитированием
Старый 06.05.2016, 12:08   #2
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

не проверял скопировал с безымянного сайта
Код:
Const n=200;
 
Type
tipkl=word;
tip = Record
kl: tipkl;
z:Array[1..50] of real
End;
 
Var
A: Array[1..n] of tip;
j:word;
 
Procedure Bose (Var AA; voz:Boolean);
Var
m,j:word; x:tip; {tip - тип сортируемых записей}
A: Array [1..65520 div Sizeof(tip)] of tip Absolute AA;
Procedure Sli(j,r,m: word); { r - расстояние между началами
сливаемых частей, а m - их размер, j - наименьший номер записи}
Begin
if j+r<=n Then
If m=1 Then
Begin
If voz Xor (A[j].kl < A[j+r].kl) Then
Begin
x:=A[j];
A[j]:= A[j+r];
A[j+r]:=x
End
End
Else
Begin
m:=m div 2;
Sli(j,r,m); {Слияние "начал"}
If j+r+m<=n Then
Sli(j+m,r,m); {Слияние "концов"}
Sli(j+m,r-m,m) End {Слияние в центральной части}
End{блока Sli};
Begin
m:=1;
Repeat
j:=1; {Цикл слияния списков равного размера: }
While j+m<=n do
Begin
Sli(j,m,m);
j:=j+m+m
End;
m:=m+m {Удвоение размера списка перед началом нового прохода}
Until m >= n {Конец цикла, реализующего все дерево слияний}
End{блока Bose};
BEGIN
Randomize;
For j:=1 to n do
begin
A[j].kl:= Random(65535);
Write(A[j].kl:8);
end;
Readln;
Bose(A,true);
For j:=1 to n do
Write(A[j].kl:8);
Readln
END.
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Старый 06.05.2016, 12:25   #3
dcLout
Пользователь
 
Регистрация: 14.10.2009
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Dvoishnik Посмотреть сообщение
не проверял скопировал с безымянного сайта
Код:
Type
tipkl=word;
tip = Record
kl: tipkl;
z:Array[1..50] of real
End;
.....
Этот код я тоже видел. Он работает с числами. Мне надо со строками.

___________
Избегайте "оверквотинга" (чрезмерного цитирования)
Модератор.

Последний раз редактировалось Serge_Bliznykov; 06.05.2016 в 13:27.
dcLout вне форума Ответить с цитированием
Старый 06.05.2016, 16:49   #4
Dvoishnik
Форумчанин
 
Регистрация: 12.02.2011
Сообщений: 808
По умолчанию

Цитата:
Сообщение от dcLout Посмотреть сообщение
Этот код я тоже видел. Он работает с числами. Мне надо со строками.
в чем проблема то??
Терпение!Дежурный экстрасенс скоро свяжется с вами!
Dvoishnik вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка методом Шелла Дмитрий9 Паскаль, Turbo Pascal, PascalABC.NET 0 29.04.2013 12:32
[C++]: сортировка методом вставки erfo Помощь студентам 3 23.05.2012 16:13
C++ сортировка методом выбора zaki Помощь студентам 0 12.12.2011 16:45
Сортировка методом Хора nafanya_naf Помощь студентам 2 31.05.2010 19:37
Сортировка методом линейного выбора и "быстрая" сортировка Карол Помощь студентам 4 27.09.2009 19:52