Помогите пожалуйста, написать программу. 3. Упорядочить массив по возрастанию ( по

Помогите пожалуйста, написать программу. 3. Упорядочить массив по возрастанию ( поубыванию)
Гость
Ответ(ы) на вопрос:
Гость
//Метод быстрой сортировки //Pascal ABC.NET v3.1 сборка 1172 //По возрастанию Const n=55; type ty=array[1..n] of integer; Var ar:ty; s:integer; procedure quicksort(l,r:integer); var i,j,x,temp:integer;  begin   i:=l; //левый конец   j:=r; //правый конец   x:=ar[random(r-l+1)+l];    repeat     while ar[i]<x do inc(i); //пока выбранный элемент больше всех, что левее его(всё норм), увеличивать индекс     while x<ar[j] do dec(j); //пока выбранный элемент меньше всех, что правее его(всё норм), уменьшать индекс     if i<=j then //если левый индекс меньше или равен правому-продолжать      begin         temp:=ar[i];         ar[i]:=ar[j];         ar[j]:=temp;         inc(i); //чтобы не запустить бесконечную рекурсию         dec(j);      end;     until i>=j;   if l<j then quicksort(l,i); //l-левый конец нового витка, j-правый   if r>i then quicksort(i,r); //r-левый конец нового витка, i-правый end; begin randomize; writeln('First array:'); for s:=1 to n do  begin   ar[s]:=random(n);   write(ar[s]:4);  end; quicksort(1,n); writeln; writeln('Final array:'); ar.println; end. //По убыванию Const n=55; type ty=array[1..n] of integer; Var ar:ty; s:integer; procedure quicksort(l,r:integer); var i,j,x,temp:integer;  begin   i:=l; //левый конец   j:=r; //правый конец   x:=ar[random(r-l+1)+l];    repeat     while ar[i]>x do inc(i); //пока выбранный элемент больше всех, что левее его(всё норм), увеличивать индекс     while x>ar[j] do dec(j); //пока выбранный элемент меньше всех, что правее его(всё норм), уменьшать индекс     if i<=j then //если левый индекс меньше или равен правому-продолжать      begin         temp:=ar[i];         ar[i]:=ar[j];         ar[j]:=temp;         inc(i); //чтобы не запустить бесконечную рекурсию         dec(j);      end;     until i>=j;   if l<j then quicksort(l,i); //l-левый конец нового витка, j-правый   if r>i then quicksort(i,r); //r-левый конец нового витка, i-правый end; begin randomize; writeln('First array:'); for s:=1 to n do  begin   ar[s]:=random(n);   write(ar[s]:4);  end; quicksort(1,n); writeln; writeln('Final array:'); ar.println; end.
Не нашли ответ?
Ответить на вопрос
Похожие вопросы