Водномерном массиве поменять местами максимальные и минимальные элементы (в паскале)
203
350
Ответы на вопрос:
Program pr; var a: array [1..10] of integer i, imax, imin, mx, mn, n: integer; begin for i : = 1 to 10 do a[i] : = random(50); mx : = a[1]; for i : = 2 to 10 do begin if a[i] > mx then begin mx : = a[i]; imax : = i end; end; mn : = a[0]; for i : = 2 to 10 do begin if a[i] < mn then begin mn : = a[i]; imin : = i end; end; a[imax] : = mn; a[imin] : = mx writeln(a); end.
//метод быстрой сортировки //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.
Популярно: Информатика
-
golovkosofia86804.04.2020 08:36
-
medvedevastasy02.10.2021 23:56
-
Умник199733725.03.2023 05:53
-
арут408.02.2020 02:01
-
lyubasorokina114.06.2020 23:39
-
lenaguceva18.05.2020 11:56
-
MrAmoral30.01.2021 02:23
-
mila33626.05.2023 04:01
-
DilulRi05.10.2021 04:57
-
Mmilanio04.05.2020 20:59