Заданный вещественный массив - Pascal

Узнай цену своей работы

Формулировка задачи:

Здраствуйте много уажаемые програмисты! =) прошу решить мне следующую задачу: 1)Заданный вещественный массив из п различных элементов (п = 100) упорядочить по возрастанию следующим методом быстрой сортировки: выбрать какой-нибудь (например, средний) элемент массива и переставить элементы массива так, чтобы слева от выбранного элемента оказались только меньшие элементы, а справа - только большие (тем самым выбранный элемент окажется на своем окончательном месте), после чего рекурсивно применить этот же метод к левой и правой частям массива. Заранее благодарю

Решение задачи: «Заданный вещественный массив»

textual
Листинг программы
var a:array[1..100] of real;
    i,n:integer;
 
procedure sort(m1,t1:integer);
var i1,j1:integer;
    w1,x1:real;
begin
i1:=m1;
j1:=t1;
x1:=a[(i1+j1) div 2];
repeat
  while a[i1]<x1 do inc(i1);
  while a[j1]>x1 do dec(j1);
  if i1<=j1 then begin
    w1:=a[i1];a[i1]:=a[j1];a[j1]:=w1;
    inc(i1);dec(j1);
  end;
until i1>j1;
if m1<j1 then sort(m1,j1);
if i1<t1 then sort(i1,t1);
end;
 
begin
readln(n);
for i:=1 to n do read(a[i]);readln;
sort(1,n);
for i:=1 to n do write(a[i]:2:2,'  ');
readln;
end.

Объяснение кода листинга программы

  1. Создается переменная a типа array[1..100] of real для хранения вещественного массива.
  2. Затем определяются две переменные i и n типа integer для хранения текущего индекса и количества элементов в массиве соответственно.
  3. Создается процедура sort, которая принимает два аргумента m1 и t1 типа integer. Внутри процедуры объявляются три переменные i1, j1 и x1 типа integer и real для хранения текущего индекса, диапазона и среднего значения в процессе сортировки.
  4. Инициализируется переменная i1 значением m1, а переменную j1 - значением t1.
  5. Вычисляется среднее значение x1 путем деления элемента массива, находящегося посередине диапазона (i1+j1) div 2, и сохраняется в переменной x1.
  6. Затем выполняется цикл repeat, который продолжается до тех пор, пока элемент a[i1] меньше x1. В этом цикле переменная i1 увеличивается на единицу.
  7. После этого выполняется цикл while, который продолжается до тех пор, пока элемент a[j1] больше x1. В этом цикле переменная j1 уменьшается на единицу.
  8. Если условие i1<=j1 выполняется, то происходит обмен элементов массива с индексами i1 и j1, а затем переменные i1 и j1 инкрементируются и декрементируются соответственно.
  9. Если i1 меньше j1, то вызывается рекурсивно процедура sort с аргументами m1 и j1.
  10. Если i1 меньше t1, то вызывается рекурсивно процедура sort с аргументами i1 и t1.
  11. После завершения всех вызовов процедуры sort выводится сообщение Sorted.
  12. Завершается программа.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.182 из 5
Похожие ответы