|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.04.2007, 15:39 | #1 |
Пользователь
Регистрация: 17.12.2006
Сообщений: 22
|
Помогите с сортировкой
Помогите пожалуйста с сортировкой. Программа не выводит нужный ответ т.е. отсортированный массив.
Program sortirovka; uses crt; Type massiv = array [1..15] of integer; var i0,j0,i,j,si,sj,k,ke,m,t:integer; a: massiv; begin clrscr; Writeln (' Cортировка по парныим слиянием'); Writeln; for i := 1 to 15 do a[i]:= random(15); Writeln ('Массив случайных чисел:'); for i:=1 to 15 do write (a[i]:3); {заполнение массива случайными числами} Writeln; Writeln; begin {сортировка по парным слиянием} si:=1; {начальный размер одного множества} while si<15 do {цикл, пока одно множество не составит весь массив} begin i0:=1; {начальный индекс 1-ого множества пары} while i0<15 do {цикл, пока не пересмотрим весь массив} begin j0:=i0+si; {начальный индекс 2-ого множества пары} i:=i0; j:=j0; {размер 2-ого множества пары может ограничиваться концом массива} if si>15-j0+1 then sj:=15-j0+1 else sj:=si; if sj>0 then begin k:=i0; {начальный индекс слитого множества} while (i<i0+si+sj) and (j<j0+sj) do {цикл, пока не исчерпаются оба входные множества} begin if a[i]>a[j] then {если элемент 1-ого <= элемента 2-ого, он остается на своём месте, но выходное множество расширяется иначе - освобождается место в выходном множестве и туда заносится элемент второго множества} begin t:=a[j]; for m:=j-1 downto k do a[m+1]:=a[m]; a[k]:=t; j:=j+1; {к следуещиму элементу во 2-м множестве} end; { if a[i] > a[j] } k:=k+1; {выходное множество увеличелось} i:=i+1; {если был перенос - за счет сдвига, если не было - за счет перехода элемента в выходное множество} end; {while} end; {if sj>0} i0:=i0+si*2; {начало следующей пары} end; {while i0<15} si:=si*2; {размер элементов пары увеличивается вдвое} end; {while si<15} end; for i:=1 to 15 do write (a[i]:3); Writeln (a[j]); readln; end. Заранее благодарен.
От великого до смешного - один шаг.
|
22.04.2007, 15:44 | #2 |
Брэйнфакер Про
Пользователь
Регистрация: 21.02.2007
Сообщений: 51
|
Ёпрст, даже поисковик использовать не надо, который я и сам не люблю. Но на одной странице сейчас несколько тем по сортировке. Куда уж больше то?
|
22.04.2007, 22:35 | #3 |
Пользователь
Регистрация: 17.12.2006
Сообщений: 22
|
Понимаю, но деваться мне некуда. Делать то все равно надо.
От великого до смешного - один шаг.
|
22.04.2007, 22:49 | #4 |
Форумчанин
Регистрация: 16.04.2007
Сообщений: 298
|
Тебе нужен определенный алгоритм сортировки или подойдет любой?
Не надо ничего усложнять. Все достаточно тривиально.
|
23.04.2007, 09:06 | #5 |
Пользователь
Регистрация: 17.12.2006
Сообщений: 22
|
Нужна только, сортировка по парным слиянием.
От великого до смешного - один шаг.
|
23.04.2007, 12:50 | #6 |
Форумчанин
Регистрация: 16.04.2007
Сообщений: 298
|
Не надо ничего усложнять. Все достаточно тривиально.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите с сортировкой. | Dissonance | БД в Delphi | 14 | 05.06.2008 15:35 |
Помогите с MSD сортировкой! | vova_b | Помощь студентам | 6 | 28.05.2008 20:33 |
Помогите решить вопрос с сортировкой ! | slavun | Microsoft Office Excel | 2 | 31.01.2008 15:14 |
Помогите с сортировкой | AHTOXA | Общие вопросы Delphi | 2 | 08.06.2007 12:46 |