Методы сортировки массивов




Одномерные и двумерные массивы.

Заполнение массива путем вычисления значений его элементов.

Пример 1.

Все элементы массива получают значение 456.

FOR I:=1 TO 10 DO

A[I]:=456;

Пример 2.

Заполнение массива элементами последовательности Фибоначчи.

Последовательность Фибоначчи определяется следующим образом:

а1=1; a2=1; при i>2 ai=ai-1+ai-2

WRITELN(‘Введите количество элементов’);

READLN(N);

A[1]:=1;A[2]:=1;

FOR I:=3 TO N DO

A[I]:=A[I-1]+A[I-2]

Пример 3.

Заполнение массива случайными числами. Иногда (к примеру, при отладке программ) надо инициализировать массив, при этом сами значения элементов нам не очень важны, лишь бы они не были "специально подобранными". В этом случае удобно использовать генератор случайных чисел. В приведенном ниже фрагменте элементы массива заполняются случайными числами из отрезка [0;1].

RANDOMIZE;

FOR I:=1 TO 10 DO

A[I]:=RANDOM;

Пример 4.

Заполнение массива случайными числами из отрезка [A;B]

RANDOMIZE;

READLN(A);

READLN(B);

FOR I:=1 TO 10 DO

M[I]:=RANDOM(B-A)+A;

Пример 5.

Ввод значений элементов массива с клавиатуры. Этот способ обычно используется тогда, когда не удается установить зависимость значения элемента массива от его номера.

FOR I:=1 TO 10 DO

READLN(A[I]);

Двумерный массив также можно заполнить одним из трех указанных способов.

Пример 6.

FOR I:=1 TO 3 DO

FOR J:=1 TO 2 DO

A[I,J]:=456 +I;

В результате выполнения этого фрагмента программы элементы массива примут значения:

А[1,1]=457

А[1,2]=457

А[2,1]=458

А[2,2]=458

А[3,1]=459

А[3,2]=459

Пример 7.

Нахождение суммы элементов n-элементного массива.

Предполагается, что числовой n-элементный массив А описан и сформирован. Приведем фрагмент программы, в котором вычисляется сумма его элементов.

S:=0;

FOR I:=1 TO N DO

S:=S+ A[I];

Пример 8.

Нахождение произведения элементов n-элементного массива.

Предполагается, что числовой n-элементный массив A описан и сформирован. Приведем фрагмент программы, в котором вычисляется произведение его элементов.

P:=1

FOR I:=1 TO N DO

P:=P*A[I];

Пример 9.

Составить программы вывода элементов двумерного массива в столбец, в строку, в виде таблицы.

FOR I:=1 TO 5 DO FOR I:=1 TO 5 DO FOR I:=1 TO 5 DO BEGIN

FOR J:=1 TO 8 DO FOR J:=1 TO 8 DO FOR J:=1 TO 8 DO

WRITELN(B[I,J]); WRITE(B[I,J],’ ‘); WRITE(B[I,J],’ ‘);

WRITELN;

Задачи

1. Даны к и массив Х[1..к]. Найти сумму (Х[1]-р)2+(Х[2]-р)2+...(Х[к]-р)2, где р=(Х[1]+Х[2]+...+Х[к])/к.

2. Даны С, к и массив Т[1..к]. Найти число элементов массива Т, меньших С, а для элементов больших С, найти их среднее арифметическое.

3. Найти номер наименьшего положительного элемента массива Х[1..к].

4. Для массива Х[1..к] напечатать сумму, произведение и номера положительных элементов после последнего нулевого элемента.

5. Напечатать сумму отрицательных элементов массива А[1..к] после первого нулевого элемента.

6. Найти общее количество нулевых элементов в массивах Х[1..к] и У[1..n].

7. Вывести четные по значению среди положительных элементов массива Х[1..n], начиная с первого положительного элемента.

8. Образовать и вывести массив Т из неотрицательных элементов массива Х[1..к]. Напечатать число элементов в массиве Т.

9. Переставить элементы массива Х[1..к] в обратном порядке.

10. В массиве Т[1..к] нулевые элементы заменить суммой всех элементов.

11. В массиве Т[1..к] заменить элементы с четными номерами суммой элементов с нечетными номерами.

12. Округлить элементы массива Х[1..n] до ближайшего целого.

13. Из элементов массива Х[1..n], попадающих в отрезок [A,B], составить массив М и вывести его на экран.

14. На плоскости ХОУ даны к точек массивами координат Х[1..к] и У[1..к]. Образовать массив номеров точек вне первой четверти.

15. Даны n, координаты Ха, Уа пунктa А и в массиве К из 2n чисел координаты Х1, У1, Х2, У2,...,Хn, Уn пунктов В1, В2,..., Вn. Вывести номер и координаты пункта Вi наиболее удаленного от пункта А.

16. В массиве А из N слов найти все слова, заканчивающиеся трехбуквенным словом В.

17. Сформировать и распечатать массивы, содержащие следующие данные:

а) значения элементов последовательности 1,3,5,7,...,131;

б) значения элементов последовательности -1,1,-1,...,-1,1 (всего n элементов);

в) фамилии всех учеников вашего класса.

18. Ввести с клавиатуры n-элементный числовой массив A и число T. Найти количество элементов массива, меньших T

19. Ввести с клавиатуры n-элементный числовой массив A и число T. Найти сумму элементов массива, больших T.

20. Объединить два массива A[1..N] и B[1..N] в один массив C[1..2*N] следующим образом: C[1]=A[1],C[2]=B[1],C[3]=A[2],C[4]=B[2],...,C[2*N-1]=A[N],C[2*N]=B[N]. В этой задаче и всех следующих предполагается, что массивы заполняются с клавиатуры.

21. Изменить порядок следования элементов в массиве на обратный.

22. Для массива X найти:

а) среднее арифметическое положительных элементов массива;

б) сумму элементов, стоящих на четных местах;

в) среднее арифметическое элементов, лежащих в отрезке [1;2];

г) количество положительных, отрицательных и равных нулю элементов;

д) количество элементов, для которых ближайшим целым является 1.

23. Описать числовые массивы X,Y,Z и выполнить следующие преобразования:

а) переписать элементы массива X в массив Y в обратном порядке;

б) сформировать массив Y[1]=X[1]+X[N],Y[2]=X[2]+X[N-1],Y[3]=X[3]+X[N-2] и т.д. (N-четное).

в) записать в массив Y номера элементов массива X, лежащих в отрезке [0,1];

г) сформировать массив Y[1],Y[2],...,Y[10] из первых десяти положительных элементов массива X. Если в массиве Y элементов меньше, оставить "лишние" элементы массива Y незаполненными;

д) записать в массив Y элементы массива X, имеющие четные индексы, а в массиве Z элементы имеющие нечетные индексы;

е) записать в начало массива Y положительные, а в конец - отрицательные элементы массива X, сохраняя порядок элементов.

24. В массиве A поменять местами наибольший и наименьший по значению элементы.

25. Найти наименьший элемент в массиве и удалить его, сдвинув элементы массива влево.

26. Сформировать новый массив из элементов массива A, больших 7 и при этом имеющих индексы, кратные 4.

27. Данные о росте учеников класса представлены в виде массива. Рост девочек кодируется знаком "+" (положительные элементы), рост мальчиков знаком "-" (отрицательные элементы). Определить средний рост мальчиков и девочек по отдельности.

28. Ввести список участников соревнования по метанию диска и их результаты. Напечатать фамилию чемпиона и его результат.

29. Опишите двумерные массивы и заполните их следующими значениями:

а) 1 1 1 1 1 б) 1 3 5 7

2 2 2 2 2 1 3 5 7

3 3 3 3 3 1 3 5 7

4 4 4 4 4 1 3 5 7

1 3 5 7

30. Найти наибольший элемент двумерного массива

31. В двумерном массиве найти суммы элементов в каждом столбце и сформировать из них одномерный массив.

32. Найти абсолютное значение разности максимального и минимального элементов двумерного массива.

33. Сформировать единичную матрицу. (Единичная матрица - это квадратная числовая таблица, у которой главная диагональ (идущая из левого верхнего угла в правый нижний) состоит из единиц, а все остальные элементы равны нулю.)

34. Найти наибольший и наименьший элементы на главной диагонали двумерного массива (двумерный массив является квадратной числовой таблицей).

35. Подсчитать общую стоимость товаров I, II, III и высшего сорта, если известна стоимость единицы товара, его количество и качество, закодированное следующим образом: IV - высший; I - первый; II - второй; III - третий сорт. Таблица имеет вид:

N сорт стоимость количество
  IV    
  I    
  III    
... ...
n II    

36. Температура измеряется каждые три часа. Определить наивысшую среднесуточную температуру за прошедшую неделю. Для заполнения таблицы температур используйте датчик случайных чисел, считая, что температура случайно и равномерно колеблется в интервале от 20 до 25 градусов.

37. В таблицу заносятся результаты выступлений спортсменов в трех попытках. Победитель определяется по сумме трех попыток. напечатать лучший результат и номер чемпиона.

38. Создайте таблицу данных "МОЙ КЛАСС". Занесите в таблицу оценки учеников класса за год по математике и информатике. Напечатайте:

- фамилии неуспевающих учеников по предметам;

- есть ли неуспевающие по данному предмету;

- фамилии отличников;

- общее число неуспевающих.

39. Заполните случайными числами в диапазоне от 0 до 10 таблицу 5*5. Выведите ее на экран.

Методы сортировки массивов

I Метод ПУЗЫРЬКА

1 способ.

Отсортировать массив А[1..n] по возрастанию.

FOR I:=1 TO n DO

FOR J:=1 TO n-1 DO

IF A[J]>A[J+1] THEN SWAP A[J], A[J+1]

2 способ.

В отсортированном массиве буквы должны быть расположены в алфавитном порядке.

FOR I:=1 TO n DO

FOR J:=1 TO n-1 DO

IF A[J]>A[I] THEN SWAP A[J], A[I]

 

II Метод СОРТИРОВКА С ВОЗВРАТОМ

Отсортировать массив по убыванию.

60 I=1

70 IF A(I)<A(I+1) THEN 140

80 SWAP A(I),A(I+1)

90 K=I

100 IF A(K-1)<=A(K) THEN 140

110 SWAP A(K),A(K-1)

120 K=K-1

130 IF K<>1 THEN 100

140 I=I+1

150 IF I<N THEN 70

 

III Метод СОРТИРОВКА ВСТАВКОЙ

Отсортировать массив по возрастанию.

IF A(1)>A(2) THEN SWAP A(1),A(2)

FOR I=3 TO N

D=A(I)

FOR J=1 TO I-1

IF A(I)<A(J) THEN 10 ELSE 20

10 FOR K=I TO J STEP -1

A(K)=A(K-1)

NEXT K

A(J)=D

20 NEXT J,I

Задачи.

1. Составить программу сортировки массива А, находящегося в памяти, по убыванию абсолютных величин его элементов. Отсортированный массив вывести на экран.

2. В памяти хранится неупорядоченный набор из N чисел. Составить программу, работая по которой ЭВМ сформирует из этого набора чисел массив А, и затем в этом массиве расположит числа в порядке их возрастания.

3. Дан список авторов в форме массива А$. Составить программу формирования указателя авторов в алфавитном порядке и вывести его на экран.

4. Составить программу сортировки массива А$ по длине слов, входящих в него. (сначала в массиве после сортировки должны быть более короткие слова).

5. Дан массив символов А$, упорядоченный в лексикографическом порядке. Вставить в массив новый элемент так, чтобы лексикографический порядок сохранился.

6. Дан массив А, содержащий как отрицательные, так и положительные числа. Составить программу исключения из него всех отрицательных чисел, а оставшиеся положительные расположить в порядке возрастания.

7. Составить программу для быстрой перестройки данного массива А, в котором элементы расположены в порядке возрастания, так, чтобы после перестройки эти же элементы оказались расположенными в порядке убывания.

8. Дан упорядоченный массив А - чисел, расположенных в порядке их возрастания. Дано некоторое число а, которое необходимо вставить в данный массив, чтобы упорядоченность массива сохранилась.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-06-26 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: