Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 08.04.2011, 21:58   #1 (permalink)
Katara
Member
 
Регистрация: 03.12.2010
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Сортировка в Pascal

Помогите с сортировкой на паскале, ибо я в этом совсем не бум-бум.
В задании необходимо разработать программу, в которой выполняется ввод списка записей определенного типа, а затем - сортировка списка по алгоритму Шелла. Сначала в программе должен вводиться размер списка (целое число), а затем сам список. Ввод одной записи осуществляется в одной строке в соответствии с форматом.

СТУДЕНТ:
` фамилия, имя, отчество (строки по 15 символов);
` курс (целое число от 1 до 5);
` средний балл (вещественное число от 1 до 10).
Формат ввода: Фамилия Имя Отчество [курс], средний балл

По алгоритму Шелла:Идея алгоритма Шелла состоит в том, что в исходном наборе элементов (массиве) сначала упоря-дочиваются элементы, расположенные на расстоянии друг от друга, т.е. итерации по массиву осущест-вляются через несколько элементов. Затем шаг уменьшается и производится сортировка с новым раз-мером шага. Так продолжается до тех пор, пока шаг не станет равным единице. Таким образом, алго-ритм Шелла представляет собой обычный медленный алгоритм сортировки, в котором ускорение про-цесса осуществляется за счет того, что на первых этапах (с большим шагом) обрабатывается меньше элементов, и они упорядочиваются быстрее, перемещаясь по массиву с большими шагами.
Katara вне форума   Ответить с цитированием

Старый 08.04.2011, 21:58
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Так же на нашем форуме встречались темы, которые схожи с вашими

Сортировка по алфавиту
Сортировка по алфавиту(помогите)
Сортировка в Паскале
Сортировка одномерного массива

Старый 10.04.2011, 09:10   #2 (permalink)
zena
Member
 
Регистрация: 11.11.2010
Сообщений: 85
Сказал(а) спасибо: 0
Поблагодарили 1 раз в 1 сообщении
Репутация: 20
По умолчанию

У меня получилось так:
Код:
program Sortirovka;
uses crt;
type
    zap=record
    FIO:string[45];
    kurs:byte;
    bal:real;
end;
label m,m1;
var
 rec:zap;
 FIO:string;
 q,i,n,p,t,k,d:integer;
 c:array[1..45] of zap;
begin
    clrscr;
    write('Введите количество записей: ');
    readln(n);
for i:=1 to n do
with c[i] do
begin
write('Фамилия:',I,': ');
  readln(c[i].FIO);
write('Курс:',I,': ');
  readln(c[i].kurs);
write('Средний балл:',d,': ');
  readln(c[i].bal);
end;

while p<>n-1 do
  begin
    p:=0;
for i:=1 to n-1 do
if c[i].FIO>c[i+1].FIO then
begin
k:=i;
goto m;
end
else p:=p+1;
m:
if p=n-1 then goto m1;
for i:=k to n do
if c[k].FIO>c[i].FIO then t:=i;
   rec:=c[k];
   c[k]:=c[t];
   c[t]:=rec;
end;
m1:
writeln('ОТСОРТИРОВАНО:');
for i:=1 to n do
with c[i] do
begin
writeln(c[i].FIO,' (',c[i].kurs,')  (',c[i].bal,')');
end;
end.
zena вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


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

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




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

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.