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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.12.2008, 16:59   #1
Kremnik
 
Регистрация: 20.12.2008
Сообщений: 4
По умолчанию 5 задач на сортировку массивов

Здравствуйте. Сегодня задали решить 5 задач на сортировку массивов. Т.к. мои познанию в паскале стремятся к минимуму, прошу вас помочь мне их решить:

Примечание: a,b - это переменные. i,k,j, i+1, k+1, j+1-это всё индексы, не множители.

1.
Заданы два одномерных массива с различным количеством элементов и натуральное число k. Объединить их в один массив, включив второй массив между k-м и (k+1)-м элементами первого, не используя дополнительный массив.

2.
Даны две последовательности a1<=a2<=...<=an и b1<=b2<=...<=bm. Образовать из них новую последовательность чисел так, чтобы она тоже была неубывающей. Дополнительный массив не использовать.

3.
Сортировка выбором. Дана последовательность чисел a1,a2,...an. Требуется переставить элементы так, чтобы они были расположены по убыванию. Для этого в массиве, начиная с первого, выбирается наибольший элемент и ставится на первое место, а первый - на место наибольшего. Затем, начиная со второго, эта процедура повторяется. Написать алгоритм сортировки выбором.

4.
Сортировка обменами. Дана последовательность чисел a1, a2,...an. Требуется переставить числа в порядке возрастания. Для этого сравниваются два соседних числа ai и ai+1. Если ai>ai+1, то делается перестановка. Так продолжается до тех пор, пока все элементы не окажутся расположенными в порядке возрастания. Составить алгоритм сортировки, подсчитывая при этом количество перестановок.

5.
Сортировка вставками. Дана последовательность чисел a1, a2,...an. Требуется переставить числа в порядке возрастания. Делается это следующим образом. Пусть a1,a2,...,ai - упорядоченная последовательность, т.е. a1<=a2<=...<=ai. Берётся следующее число ai+1 и вставляется в последовательность так, чтобы новая последовательность была также возрастающей. Процесс производится до тех пор, пока все элементы от i+1 до n не будут перебраны.

Буду очень благодарен за помощь.

Последний раз редактировалось Kremnik; 20.12.2008 в 18:02.
Kremnik вне форума Ответить с цитированием
Старый 20.12.2008, 17:08   #2
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

Цитата:
Т.е. всего должно быть написано 5 программ.
В любых других разделах (кроме этого http://programmersforum.ru/forumdisplay.php?f=29) вам никто ничего не должен. Или показывайте, что получилось у вас, или тему удалят...
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"
AlDelta вне форума Ответить с цитированием
Старый 20.12.2008, 17:15   #3
Kremnik
 
Регистрация: 20.12.2008
Сообщений: 4
По умолчанию

Цитата:
Сообщение от AlDelta Посмотреть сообщение
В любых других разделах (кроме этого http://programmersforum.ru/forumdisplay.php?f=29) вам никто ничего не должен. Или показывайте, что получилось у вас, или тему удалят...
Это я так написал некрасиво. Начало:
Цитата:
прошу вас помочь мне их решить:
Kremnik вне форума Ответить с цитированием
Старый 20.12.2008, 18:10   #4
Teor
Пользователь
 
Регистрация: 20.12.2008
Сообщений: 46
По умолчанию

1) Вроде работает

program mas;
uses crt;
var mas1,mas2:array[1..1000] of integer; k,i:integer;
begin
clrscr;
writeln ('Введите k');
readln (k);
for i:=1 to 2*k do
mas1[i]:=-random(30)+random(30);
for i:=1 to 3*k do
mas2[i]:=-random(30)+random(30);
for i:=1 to k do
begin
write (mas1[i],' ');
end;
for i:=1 to 3*k do
write (mas2[i],' ');
for i:=k+1 to 2*k do write (mas1[i],' ');
readkey
end.

3) Один из вариантов
program sort;
uses crt;
var mas:array[1..10] of integer; i,j,max,ii,c:integer;
begin
clrscr;
for i:=1 to 10 do
begin
mas[i]:=-random(30)+random(30);
write (mas[i],' ');
end;
writeln;
writeln;
for i:=1 to 10 do
begin
max:=mas[i];
for j:=i to 10 do
if mas[j]>=max then
begin
ii:=j;
max:=mas[j];
end;
c:=mas[i];
mas[i]:=mas[ii];
mas[ii]:=c;
end;
for i:=1 to 10 do write (mas[i],' ');
readkey
end.

4) program obmen;
uses crt;
var mas:array[1..10] of integer; i,j,kil,c:integer;
begin
clrscr;
kil:=0;
for i:=1 to 10 do
begin
mas[i]:=-random(30)+random(30);
write (mas[i],' ');
end;
writeln;
for i:=1 to 10 do
for j:=1 to 9 do
if mas[j]>mas[j+1] then
begin
c:=mas[j];
mas[j]:=mas[j+1];
mas[j+1]:=c;
kil:=kil+1;
end;
for i:=1 to 10 do
write (mas[i],' ');
writeln;
writeln ('Количество ',kil);
readkey
end.

Последний раз редактировалось Teor; 20.12.2008 в 18:50.
Teor вне форума Ответить с цитированием
Старый 21.12.2008, 00:54   #5
Kremnik
 
Регистрация: 20.12.2008
Сообщений: 4
По умолчанию

Спасибо огромное!
Kremnik вне форума Ответить с цитированием
Старый 21.12.2008, 01:35   #6
Kremnik
 
Регистрация: 20.12.2008
Сообщений: 4
По умолчанию

Хм...что то как то третье помоему не так работает. Задача какая: при запуске программы (ctrl+f9) надо ввести значения элементов массива. При запуске (alt+f5) должны выводится значения массива по убыванию. Соответственно по данному алгоритму (выбором).
Kremnik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите переделать файловую сортировку на сортировку динамич. списков Taisja Помощь студентам 2 15.06.2008 16:10
Задача на сортировку... Sota Помощь студентам 4 25.05.2008 19:26
Про сортировку AlexMori Общие вопросы Delphi 3 11.01.2008 01:51
Задача на сортировку массива Acid Паскаль, Turbo Pascal, PascalABC.NET 1 17.06.2007 00:16