сортировка выбором в паскале

Тема в разделе "Pascal and Delphi", создана пользователем kirill97097, 9 май 2010.

Статус темы:
Закрыта.
  1. kirill97097

    kirill97097 Гость

    Привет! Мне нужно сделать работу, а я в этом полный НОЛЬ! Нужно сформировать при помощи генератора псевдослучайных чисел линейный целочисленный массив 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 < min then begin min := d; 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;


    но что с ней делать и как ее адаптировать к моему случаю ума не приложу. Для меня это все китайский язык!
    Помогите, пожалуйста!
     
  2. isqoff

    isqoff Гость

    выполнить в нём линейный поиск введенного с клавиатуры элемента = это вводим индекс или любое число в диапазоне от -50 до 50??
     
  3. isqoff

    isqoff Гость

    Код (Delphi):
     uses Crt;
    var i,j,x,min,max,middle,buf : integer;
    a : array [1..20] of integer;
    ok : boolean;

    BEGIN
    {--------- создание линейного массива генератором случайных чисел --------------}
    Randomize;

    for i := 1 to 20 do a[i]:= Random(100)-50;

    for i := 1 to 20 do write('a[',i,']= ',a[i],' ');
    writeln;
    writeln;

    {------------------ поиск искомого элемента в массиве --------------------------}

    writeln('Введите число для поиска в массиве из');
    write('диапазона чисел (от -50 до 50) :');
    readln(x);

    for i:= 1 to 20 do
    begin
    if (x = a[i])then begin
    write('Число в массиве под индексом [',i,']');
    writeln;
    ok := true;
    end;
    end;


    if not ok then write('Искомого числа в массиве нет!');

    {--------------------------- сортировка выбором --------------------------------}

    for i := 1 to 19 do
    begin
    min := i;
    for j:= i+1 to 20 do
    if a[j]< a[min] then min := j;
    buf :=a[i];
    a[i]:=a[min];
    a[min]:=buf;

    end;

    writeln;
    writeln;
    writeln('Массив отсортирован методом прямого выбора :');
    for i := 1 to 20 do write('a[',i,']= ',a[i],' ');

    writeln;
    writeln;

    {-------------------- бинарный поиск эллемента ---------------------------------}

    if not ok
    then begin
    writeln('Выполнить бинарный поиск несуществующего эллемента');
    write('массива невозможно!!!');
    end
    else begin
    min := 1;
    max := 20;
    i := 0;
    middle := 0;
    ok := false;
    repeat
    middle := (max - min) div 2 + min;
    i := i + 1;

    if a[middle] = x
    then ok := true
    else if x < a[middle]
    then max := middle - 1
    else min := middle + 1;

    until(min > max)or ok;

    end;

    if ok then write('Бинарный поиск завершён! Искомый эллемент'+
    ' в массиве под номером [',middle,']');


    END.
     
Загрузка...
Похожие Темы - сортировка выбором паскале
  1. vera2014
    Ответов:
    0
    Просмотров:
    1.071
  2. Liori
    Ответов:
    2
    Просмотров:
    1.006
  3. FCDK
    Ответов:
    0
    Просмотров:
    1.264
  4. ленарано
    Ответов:
    1
    Просмотров:
    1.103
  5. Creder
    Ответов:
    0
    Просмотров:
    1.346
Статус темы:
Закрыта.

Поделиться этой страницей