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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2010, 10:23   #1
wrmarw
Пользователь
 
Регистрация: 16.04.2010
Сообщений: 48
Стрелка Сортировка выбором в Паскале!

Привет! Мне нужно сделать работу, а я в этом полный НОЛЬ! Нужно сформировать при помощи генератора псевдослучайных чисел линейный целочисленный массив A[20], таким образом, чтобы элементы массива принадлежали отрезку [-50, 50], выполнить в нём линейный поиск введенного с клавиатуры элемента, отсортировать выбором и выполнить бинарный поиск элемента.
Программа в интернете нашлась вроде полезная:

procedure SelectSort(var d:vector;kol2:integer);
var j,min,nmin,k:integer;
begin
j := 1;
repeat
min := 100;
for i := j to kol2 do
if d[i] < min then begin min := d[i]; nmin := i; end;
for k := nmin downto j+1 do d[k] := d[k-1];
d[j] := min;
j := j + 1;
until j = kol2;
end;


но что с ней делать и как ее адаптировать к моему случаю ума не приложу. Для меня это все китайский язык!
Помогите, пожалуйста!
wrmarw вне форума Ответить с цитированием
Старый 09.05.2010, 10:49   #2
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Код:
program Find_Bin;
const
Count =20;
M : array[1..Count] of byte =
(20,20,19,19,19,18,17,17,12,12,11,10,9,9,5,5,3,3,2,1);
var
N, I, First, Last : Byte;
A : integer;
Found : boolean ;
begin
Writeln('Исходный массив:');
for I := 1 to Count do Write (M[I] :3,' '); Writeln; Writeln;
Write('Введите значение элемента массива для поиска >');
Readln(N);
A:=0;
First := 1;
Last := Count;
Found:=False; {Элемент не найден}
repeat {Повторять поиск}
I := (First + Last) div 2; {Разделить на две части}
if M[I] = N then Found:=True
else
begin
if M[I] > N then First := I+1 {Искать элемент в правой части}
else Last := I-1; {Искать элемент в левой части}
end;
A:=A+1; {Увеличить счетчик числа итераций}
until (Found) or (First>Last); {Завершить, если найдется искомый элемент или будет просмотрен весь массив}
if Found then Writeln('Искомый элемент ',N,' в массиве занимает ',I,'-ю позицию')
else
Writeln('В массиве нет искомого элемента ',N);
Writeln('Поиск выполнен За ',A,' итераций');
end.
Бинарный поиск.Только массив рандомно заполни и всё.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 09.05.2010, 11:00   #3
wrmarw
Пользователь
 
Регистрация: 16.04.2010
Сообщений: 48
По умолчанию

Дорогущий, многоуважаемый, любимый ROMA2PVT!!!!!!!!!! Спасибо огромнейшее!!! (Сейчас будет тупая фраза, приготовься!!!) ЧТО ЗНАЧИТ РАНДОМНО ЗАПОЛНИ???
Да, я тупой, я вообще в этом не разбираюсь. Слово "РАНДОМНО ЗАПОЛНИ" для меня звучит примерно как "jtrthr;l/thjjhjhkgk" понимаете?!!! ((
эххх...
wrmarw вне форума Ответить с цитированием
Старый 09.05.2010, 11:04   #4
wrmarw
Пользователь
 
Регистрация: 16.04.2010
Сообщений: 48
По умолчанию

а "бинарный поиск" и того хуже...
wrmarw вне форума Ответить с цитированием
Старый 09.05.2010, 13:29   #5
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Рандомно-это заполнение массива случайными числами.Т.е. так
Код:
randomize;
for i:=1 to n do
begin
a[i]:=random(10)-5;
end;
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 09.05.2010, 13:40   #6
wrmarw
Пользователь
 
Регистрация: 16.04.2010
Сообщений: 48
По умолчанию

ээээ, ясно, спасибо. а куда это теперь написать???
wrmarw вне форума Ответить с цитированием
Старый 09.05.2010, 13:48   #7
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Прошу великодушно извинить, но:
Двоичный (бинарный) поиск (также известен как метод деления пополам и дихотомия) — классический алгоритм поиска элемента в отсортированном массиве (векторе)

wrmarw, в твоем случае рандомно заполнить массив нужно так:
Код:
randomize;
for i:=1 to 20 do
  a[i]:=random(101)-50;
В этом случае массив A:array[1..20] of integer
А линейный поиск, сортировка выбором и бинарный поиск - отдельная тема за отдельную договоренность...
Перемешивай дело с бездельем и не сойдешь с ума...

Последний раз редактировалось Grag; 09.05.2010 в 14:11.
Grag вне форума Ответить с цитированием
Старый 09.05.2010, 17:27   #8
ROMA2PVT
ТАМБОВСКИЙ ВОЛК.
Участник клуба
 
Аватар для ROMA2PVT
 
Регистрация: 16.03.2010
Сообщений: 1,354
По умолчанию

Код:
program Find_Bin;
const
Count =20;
var
N, I, First, Last :integer;
A,x,j,k : integer;
Found : boolean ;
M : array[1..Count] of integer;
begin
Writeln('Исходный массив:');
randomize;
for I := 1 to Count do
begin
m[i]:=random(101)-51;
Write (M[i],' ');
end;
Writeln;

for i:=1 to count-1 do
 begin
   j:=i;
   for k:=i+1 to count do
    if m[k]>m[j] then j:=k;
   x:=m[j];
   m[j]:=m[i];
   m[i]:=x;
 end;
 writeln;
 writeln('Отсортированный массив: ');
for i:=1 to count do
begin
write (m[i],' ');
end;
writeln;
Write('Введите значение элемента массива для поиска >');
Readln(N);
A:=0;
First := 1;
Last := Count;
Found:=False; {Элемент не найден}
repeat {Повторять поиск}
I := (First + Last) div 2; {Разделить на две части}
if M[i] =N then Found:=True
else
begin
if M[i]>=N then First:=I+1 {Искать элемент в правой части}
else Last:=I-1; {Искать элемент в левой части}
end;
A:=A+1; {Увеличить счетчик числа итераций}
until (Found) or (First>Last); {Завершить, если найдется искомый элемент или будет просмотрен весь массив}
if Found then Writeln('Искомый элемент ',N,' в массиве занимает ',I,'-ю позицию')
else
Writeln('В массиве нет искомого элемента ',N);
Writeln('Поиск выполнен За ',A,' итераций');
end.
Вот подправил бинарный поиск.Вроди косяков нет.
にんじゃ
ROMA2PVT вне форума Ответить с цитированием
Старый 11.05.2010, 14:10   #9
wrmarw
Пользователь
 
Регистрация: 16.04.2010
Сообщений: 48
По умолчанию

cпасибо, ROMA2PVT, но тут ошибка какая-то: написано арифметическое переполнение!
что же делать?!

................
wrmarw вне форума Ответить с цитированием
Старый 11.05.2010, 18:53   #10
wrmarw
Пользователь
 
Регистрация: 16.04.2010
Сообщений: 48
По умолчанию

наверное, пойду повешусь...
wrmarw вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка массива выбором и пузырьком (делфи) kira_truelove Помощь студентам 1 05.12.2009 14:00
Сортировка простым выбором в Delphi Vlad111 Помощь студентам 0 13.11.2009 10:03
Сортировка простым выбором (метод пузырька)) Sparky Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 22.09.2009 18:06
Сортировка выбором curly182 Общие вопросы C/C++ 3 24.05.2009 13:45
поможите человеку плиз:)сортировка выбором в матрице. benzus Паскаль, Turbo Pascal, PascalABC.NET 19 27.04.2008 15:47