Обработка массива —Перестановка

´В задачах из таблицы массив задан (под словом "задан" будем понимать, что массив описан и значения его элементов определены).
Задачи, в которых требуется поменять местами элементы массива.
Перестановка элементов массива в обратном порядке(.pas)
          
Метод решения:
1.Решаем путем перестановки элементов массива попарно - первый с последним, второй с предпоследним, и т.д. Значит, i-ый элемент меняем местами с (n-i+1)-ым
2. Количество таких перестановок в два раза меньше количества элементов.
for i:=1 to n div 2  do
                     begin
                             c:=a[i];
                             a[i]:=a[n+1-i];
                              a[n+1-i]:=c;
                      end;
Перестановка соседних элементов массива (.pas)
 Метод решения:
1.Решаем путем перестановки элементов массива попарно - первый со вторым, третий с четвёртым т.е. элемент с нечетным номером с элементом, имеющим четный номер и т.д. Значит, (2*i-1)-ый элемент меняем местами с (2*i)-ым
2. Количество таких перестановок в два раза меньше количества элементов.
for i:=1 to n div 2 do
begin
         k:=x[2*i-1];
         x[2*i-1]:=x[2*i];
         x[2*i]:=k;
end;
Обмен половин массива(.pas)
 Метод решения:
1.Решаем путем перестановки элементов массива попарно - i-ый c( i+k)-ым, где k=n div 2.
2. Количество таких перестановок в два раза меньше количества элементов.
k:=n div 2;
for i:=1 to n div 2 do
                            begin
                            c:=a[i];
                            a[i]:=a[k+i];
                            a[k+i]:=c;
  end;
Перестановка максимального и минимального элементов массива.(.pas)
 Метод решения:
1.Находим номер наибольшего и наименьшего элементов массива.
2. Меняет наибольший и наименьший элементы местами.
imax:=1;
imin:=1;
for i:=2 to n do
         if a[i]>a[imax] then imax:=i
                  else if a[i]c:=a[imin];
a[imin]:=a[imax];
a[imax]:=c;
Задачи циклической перестановки.
Циклический сдвиг элементов массива на один элемент вправо, последний элемент при этом должен оказаться на первом месте.(.pas)
 c:=a[n];
for i:=n downto 2 do a[i]:=a[i-1];
a[1]:=c;
Циклический сдвиг элементов массива на один элемент влево, первый элемент при этом должен оказаться на последнем месте.(.pas)
 c:=a[1];
for i:=2 to n do a[i-1]:=a[i];
a[n]:=c;
Задачи сортировки элементов массива.
Сортировка «пузырьком» (.pas)
Метод решения:
- Сравниваются пары соседних элементов массива и, если значения элементов в паре стоят в неправильном порядке (правый меньше левого), то меняем их местами. В результате одного такого прохода по массиву самый большой элемент окажется на последней позиции.
- Всю процедуру повторяем столько раз, сколько элементов нужно поставить на нужное место то есть n-1.
for k:=n-1 downto 1 do
for i:=1 to k do
                  if a[i+1]                                                      c:=a[i];
                                                      a[i]:=a[i+1];
                                                      a[i+1]:=c;
                                             end;
Сортировка выбором(.pas)
Метод решения:
В неупорядоченной последовательности выбирается минимальный (максимальный) элемент и записывается на первое место. Этот элемент исключается из дальнейшей обработки. Оставшаяся последовательность элементов принимается за исходную. И процесс повторяется до тех пор, пока все элементы не будут выбраны.
for k:=1 to n do
                 begin
                 min := a[k];
                 imin := k;
                 for j := k+1 to n do
                                  if a[j] < min then begin
                                                                    min:= a[j];
                                                                    imin:=j
                                                             end;
                 a[imin] := a[k];
                 a[k] :=min;
end;
Сортировка методом прямого включения(.pas)
Метод решения:
При сортировке из неупорядоченной последовательности элементов поочередно выбирается каждый элемент, сравнивается с уже упорядоченными элементами и помещается на соответствующее место в списке упорядоченных элементов.
for k := 2 to n do
                 begin
                          w := a[k];
                          j := k-1;
                          while (j > 0) and (w <= a[j]) do
                                                                    begin
                                                                    a[j+1] := a[j];
                                                                    j:=j-1;
                                                                    end;
                            a[j+1] := w;
                 end;

Комментариев нет:

Отправить комментарий