Вопрос № 176552: Уважаемые эксперты,помогите написать программу: При помощи генератора случайных чисел задать последоватеьность из 100 элементов,каждый из которых целое число в диапазоне лт 1 до 100. Отсортировать такую последовательность в порядке возрастания ис...
Вопрос № 176558: Добрый вечер,уважаемые эксперты!!! Помогите решить задачи: Найти сумму элементов и произведение ниже главной диагонали Проверить,содержит ли матрица нулевую строку найти решение системы n линейных уравнений с n неизвестными треугольного...
Вопрос № 176559: Помогите решить одну задачку: Выполнить обмен в одномерном массиве,значениями максимального элемента и элемента,имеющего заданное значение(использовать ф-цию нахождения номера максимального элемента,ф-цию нахождения номера элемента, имеющего задан...
Вопрос № 176552:
Уважаемые эксперты,помогите написать программу: При помощи генератора случайных чисел задать последоватеьность из 100 элементов,каждый из которых целое число в диапазоне лт 1 до 100. Отсортировать такую последовательность в порядке возрастания используя:а)метод прямого включения б) пузырьковую сортировку. сравнить эффективность методов а и б подсчитывая в ходе выполнения программы кол-во сравнений С, и кол-во перестановок М, для каждого метода
Сортировки оформить в виде отдельных подпрограмм. Спасибо
Отвечает Verena, Профессионал :
Здравствуйте, Кусмарцев Андрей Валерьевич. Программа в приложении. Смысл должен быть понятен из комментариев, но ещё описание алгоритмов можете посмотреть здесь: Сортировка пузырьком Сортировка методом прямого включения Функция Random Удачи! PS:
Проверила, random (x) возвращает всё-таки от 0 до x-1, так что поменяла на random (100).
Приложение:
----- Эта история - не для истории, понимаешь?
Ответ отправил: Verena, Профессионал
Ответ отправлен: 07.02.2010, 19:27
Номер ответа: 259295
Оценка ответа: 5
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 259295
на номер 1151 (Россия) |
Еще номера »
{ Заполняет массив случайными значениями в диапазоне [NUM_LO..NUM_HI] } procedure CreateArray(var Sequence:TArray); var i:Integer; begin for i:=1
to NUM_CNT do begin Sequence[i]:=Random(NUM_HI-NUM_LO+1)+NUM_LO; end; end;
{ Выводит массив } procedure PrintArray(Message:String;Sequence:TArray); var i:Integer; begin WriteLn(Message); for i:=1 to NUM_CNT do begin Write(Sequence[i]:4,' '); end; WriteLn; end;
{ Пузырьковая сортировка } procedure BubbleTest(var Sequence:TArray;var Comparisions,Permutations:Integer); var i,j,Tmp:Integer; begin
{ Обнулим счетчики } Comparisions:=0; Permutations:=0; for i:=1 to NUM_CNT-1 do begin for j:=1 to NUM_CNT-i do begin Inc(Comparisions); if Sequence[j]>Sequence[j+1] then begin Inc(Permutations); Tmp:=Sequence[j]; Sequence[j]:=Sequence[j+1]; Sequence[j+1]:=Tmp; end; end; end; end;
{ С
ортировка включением } procedure InclusionTest(var Sequence:TArray;var Comparisions,Permutations:Integer); var i,j,item:Integer; begin { Обнулим счетчики } Comparisions:=0; Permutations:=0; for i := 2 to NUM_CNT do begin item:=Sequence[i]; j:=i-1; Inc(Comparisions); { Ищем куда вставить } while (j>0) and (item<=Sequence[j]) do begin Inc(Comparisions); Inc(Permutations);
Sequence[j+1]:=Sequence[j]; Dec(j); end; Inc(Permutations); Sequence[j+1]:=item; end; end;
{ Помогает нам оформить вывод } procedure Test(Message:String;Sequence:TArray;Proc:TSortProc); var Comparisions,Permutations:Integer; begin WriteLn; Proc(Sequence,Comparisions,Permutations); WriteLn(Message); PrintArray('Массив после сортировки:',Sequence);<
br> WriteLn('Сравнений:',Comparisions); WriteLn('Перестановок:',Permutations); end;
Ответ отправил: Micren, Профессионал
Ответ отправлен: 07.02.2010, 20:04
Номер ответа: 259297
Оценка ответа: 4
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 259297
на номер 1151 (Россия) |
Еще номера »
Отвечает star9491, 5-й класс :
Здравствуйте, Кусмарцев Андрей Валерьевич.
Предлагаю еще один вариант.
Код:
program Psort;
{$APPTYPE CONSOLE}
const n=100;
type XArray = array[1..n] of integer;
var x,y:XArray; i:integer; c,m:integer;
procedure InitData; var
i: integer; begin Randomize; for i:=1 to n do begin x[i]:=Random(n)+1; y[i]:=x[i]; end; end;
procedure DirectIncludeSort; var i,j,tmp:integer; begin for i:=2 to n do begin tmp:=x[i]; j:=i; while (j>1)and(tmp<x[j-1]) do begin x[j]:=x[j-1]; j:=j-1; m:=m+1; c:=c+1; end; c:=c+1; x[j]:=tmp; m:=m+1 end end
;
procedure BubbleSort; var i,j,tmp:integer; begin for i:=1 to n-1 do for j:=n downto i+1 do begin if y[j-1]>y[j] then begin tmp:=y[j]; y[j]:=y[j-1]; y[j-1]:=tmp; m:=m+1; end; c:=c+1 end end;
begin InitData; for i:=1 to n do write('x[',i,']=',x[i],' '); writeln; c:=0; m:=0; DirectIncludeSort; writeln('c=',c,'
m=',m); for i:=1 to n do write('x[',i,']=',x[i],' '); writeln; c:=0; m:=0; BubbleSort; Writeln('c=',c,' m=',m); for i:=1 to n do write('x[',i,']=',y[i],' '); writeln; readln end.
Ответ отправил: star9491, 5-й класс
Ответ отправлен: 07.02.2010, 23:42
Номер ответа: 259301
Оценка ответа: 5
Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"?
Отправить SMS#thank 259301
на номер 1151 (Россия) |
Еще номера »
Вопрос № 176558:
Добрый вечер,уважаемые эксперты!!! Помогите решить задачи: Найти сумму элементов и произведение ниже главной диагонали Проверить,содержит ли матрица нулевую строку найти решение системы n линейных уравнений с n неизвестными треугольного вида
Отвечает Пупорев Юрий Борисович, Специалист :
Здравствуйте, angel.nero! Решение задач в приложении. Подробно не комментирую, ибо я уже немало Вам написал о матрицах.
{#/template js_tmpl_auth_reg_button}
{#template js_tmpl_auth_reg_descr}
{#if $P.login_register_tab == 1}
Для оформления подписки на выбранную рассылку, работы с интересующей вас группой или доступа в нужный вам раздел, просим авторизоваться на Subscribe.ru
{#/if}
{#if $P.login_register_tab == 2}
Для регистрации укажите ваш e-mail адрес. Адрес должен быть действующим, на него сразу после регистрации будет отправлено письмо с инструкциями и кодом подтверждения.
{#/if}
{#/template js_tmpl_auth_reg_descr}
{#template js_tmpl_soc_auth_reg_descr}
Или зарегистрируйтесь через социальную сеть.
{#/template js_tmpl_soc_auth_reg_descr}
{#template js_tmpl_auth_reg_soc}
Вам отправлено письмо для подтверждения вашего адреса {$P.register_confirm_mail}. Для подтверждения адреса перейдите по ссылке из этого письма.
{#/template js_tmpl_auth_reg_descr}
{#template js_tmpl_auth_reg_action}