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

Ответы 1

  • //Метод быстрой сортировки//Pascal ABC.NET v3.1 сборка 1172//По возрастаниюConstn=55;typety=array[1..n] of integer;Varar: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;beginrandomize;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.//По убываниюConstn=55;typety=array[1..n] of integer;Varar: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;beginrandomize;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.
    • Автор:

      jakobhnb4
    • 6 лет назад
    • 0
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years