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