Упорядочение элементов массива




Сортировка представляет собой процесс упорядочения элементов в массиве в порядке возрастания или убывания их значений. Например, массив X из n элементов будет отсортирован в порядке возрастания значений его элементов, если:

x[1]<x[2]<…<x[n]

и в порядке убывания, если:

x[1]>x[2]>…>x[n]

Алгоритм сортировки методом пузырька.

Сравнить первый элемент массива со вторым. Если, первый окажется больше второго, то поменять их местами. Повторить для второго и третьего, третьего и четвертого, i-го и (i+l)-гo, (n-l)-гo и n-го элементов. В результате этих действий самый большой элемент станет на последнее (n)-е место. Повторить данный алгоритм, но последний (n)-й элемент не рассматривать, так как он уже занял свое место. После проведения данной операции самый большой элемент оставшегося массива станет на (n-l)-e место. Повторять до тех пор, пока весь массив не упорядочится по возрастанию.

for j=1:N-1 for i=1:N-j if x(i) > x(i+1) b=x(i); x(i)=x(i+1); x(i+1)=b; end; end; end;
Рис. 4 Алгоритм сортировки массива методом пузырька

Удаление элемента из массива

Необходимо удалить из массива х, состоящего из n элементов, m-й по номеру элемент. Для этого достаточно записать элемент (m+1) на место элемента m, (m+2) – на место (m+l) и т.д., n-на место (n-1) и при дальнейшей работе с этим массивом использовать элемент n-1.

В MatLab есть встроенные функции нахождения суммы (sum), произведения (prod) элементов массива (матрицы), поиска максимума (max) и минимума(min), сортировки (sort).


Индивидуальные задания:

 

По предложенным алгоритмам разработать блок-схемы и написать листинг.

 

Вариант 1

Найти наименьшее простое число в массиве x(n). Если тахих чисел несколько определить их количество.

Алгоритм

  1. Ввести размер массива N.
  2. Создать цикл для элементов массива.
  3. Ввести переменную pr, которая является флагом, т.е. показателем наличия простых чисел в массиве (пока в массиве не обнаружено простых чисел pr=0, если простые числа есть pr=1).
  4. Осуществить проверку на то, является ли данный элемент массива простым числом (при этом в листинг вводится переменная L, которая используется при этой проверке: L=1, пока не встретились делители числа, L станет равной 0, если встретятся делители числа).
  5. Создать цикл по j от 2 до x(i)/2 для проверки является ли число простым (поиск возможных делителей числа).
  6. Если x(i) делится на j, то встретился делитель числа, x(i) не является простым, в L записывается 0 и происходит выход из цикла по j с помощью оператора break.
  7. Осуществить проверку значения переменной L, если L=1, то число x(i) простое. Если число x(i) простое и при этом pr=0, то встретилось первое простое число, и его значение записывается в переменную min, т.е. делается предположение, что x(i) является минимальным простым; количество минимумов k равно 1.
  8. Записать в pr 1, так как в массиве есть простые числа.
  9. Иначе, если pr=1, т.е. встретилось очередное простое число, сравнить x(i) с min.
  10. Если x(i)<min, этот элемент x(i) записать в переменную min, количество минимумов при этом =1.
  11. Иначе, если очередной элемент x(i) равен min, то количество минимумов увеличивается.
  12. Если после перебора всех элементов массива, переменная pr осталась равной 0, то вывести сообщение «Простых чисел нет».
  13. Если простые числа встретились в массиве, вывести минимальное простое число min и количество минимальных простых чисел k.

Вариант 2

В квадратной матрице A(N,N) необходимо обнулить столбцы, в которых элемент на побочной диагонали является максимальным.

Алгоритм

В каждом столбце найти max элемент и проверить: если наибольший элемент расположен на побочной диагонали – обнулить все элементы в соответствующем столбце. Элемент находится на побочной диагонали, если его номера строки i и столбца j связаны соотношением i+j=n+1.

  1. Ввести размер квадратной матрицы N.
  2. Создать цикл по всем столбцам матрицы, в каждом из которых осуществить поиск максимального элемента и его номера.
  3. Предположить, что первый элемент в столбце A(1,j) и является максимальным.
  4. Ввести в листинг переменную nmax, в которой будет храниться номер максимального элемента j-го столбца. Записать в переменную nmax 1.
  5. В цикле по i перебрать все элементы j-го столбца.
  6. Если очередной элемент больше max, то в переменную max записать этот элемент, а в переменную nmax – номер строки, где находится элемент.
  7. Если в текущем столбце максимальный элемент находится на побочной диагонали, то обнулить все элементы в этом столбце.

 



Поделиться:




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

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


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