Презентация на тему: Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами

Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами
1/82
Средняя оценка: 4.3/5 (всего оценок: 86)
Код скопирован в буфер обмена
Скачать (2402 Кб)
1

Первый слайд презентации

Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами.

Изображение слайда
2

Слайд 2

Задача – проект 6_1. Вывести минимальный элемент массива X и его номер ( индекс).

Изображение слайда
3

Слайд 3

Изображение слайда
4

Слайд 4

Изображение слайда
5

Слайд 5

Изображение слайда
6

Слайд 6

public class minElDemo{ public static void minElArr (int X[ ]) { int min = X[0], numMin = 0; for (int i = 1; i < X.length; i++) if (X[i] < min){ min = X[i]; numM in = i; } System.out.print f ( "Минимальный элемент массива: %d, его номер: % d\n ", min, numM in); } //minElArr

Изображение слайда
7

Слайд 7

public static void putArr (int X[ ]) { for (int i = 0; i < X.length; i++) System.out.print f ( "%d ", X[i]); System.out.println(); } //putArr public static void main (String args [ ]) { int A [ ] = {-5, 29, 0, -45, 55}; System.out.println ("Массив A:"); putArr(A); minElArr(A); int В [ ] = {3, -7, 5, 9, -10, 7, -3}; System.out.println ("Массив B:"); putArr(В); minElArr(В); } //main } //class

Изображение слайда
8

Слайд 8

Самостоятельно разработайте метод для нахождения максимального элемента массива и его номера.

Изображение слайда
9

Слайд 9

Изображение цикла for на схемах алгоритмов ГОСТ 19.701-90 (ИСО 5807-85) 3.2.2.3. Блок «Подготовка» Символ отображает модификацию команды или группы команд с целью воздействия на некоторую последующую функцию (установка переключателя, модификация индексного регистра или инициализация программы).

Изображение слайда
10

Слайд 10

3.2.2.6. Блок «Граница цикла» Символ, состоящий из двух частей, отображает начало и конец цикла. Обе части символа имеют один и тот же идентификатор. Условия для инициализации, приращения, завершения и т.д. помещаются внутри символа в начале или в конце в зависимости от расположения операции, проверяющей условие. ГОСТ 19.701-90 (ИСО 5807-85) Единая система программной документации СХЕМЫ АЛГОРИТМОВ, ПРОГРАММ, ДАННЫХ И СИСТЕМ Условные обозначения и правила выполнения

Изображение слайда
11

Слайд 11

! ? !

Изображение слайда
12

Слайд 12

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

Изображение слайда
13

Слайд 13

Дан массив {A[0], A[1], …, A[ n -1]}. Переставить элементы массива так, чтобы выполнялось условие: A[0] ≤ A[1] ≤ A[2] ≤… ≤ A[ n -1]. (*) Идея  метод  алгоритм  программа. Пузырьковая сортировка Идея: Анализируем соотношение (*) и замечаем, что в паре соседних элементов левый не больше правого. Если в паре левый больше правого, их надо переставить. Метод пузырька основан на перестановке соседних элементов!

Изображение слайда
14

Слайд 14

Пузырьковая сортировка (вариант1)

Изображение слайда
15

Слайд 15

Изображение слайда
16

Слайд 16

Изображение слайда
17

Слайд 17

Изображение слайда
18

Слайд 18

Изображение слайда
19

Слайд 19

Изображение слайда
20

Слайд 20

Результат первого просмотра Самый большой пузырек всплыл!

Изображение слайда
21

Слайд 21

Итак, первый просмотр ( i = 1) окончен, но не все элементы массива А упорядочены. Признак неупорядоченности массива: при совершенном просмотре были перестановки

Изображение слайда
22

Слайд 22

Изображение слайда
23

Слайд 23

Изображение слайда
24

Слайд 24

Результат второго просмотра Следующий по величине пузырек всплыл!

Изображение слайда
25

Слайд 25

Итак, второй просмотр ( i = 2 ) окончен, но не все элементы массива А упорядочены. Признак неупорядоченности – были перестановки

Изображение слайда
26

Слайд 26

Были перестановки, значит массив не упорядочен – продолжаем просмотр!

Изображение слайда
27

Слайд 27

Были перестановки, значит массив не упорядочен – продолжаем просмотр!

Изображение слайда
28

Слайд 28

Были перестановки, значит массив не упорядочен – продолжаем просмотр!

Изображение слайда
29

Слайд 29

Были перестановки – продолжаем просмотр!

Изображение слайда
30

Слайд 30

Изображение слайда
31

Слайд 31

( почти упорядоченный массив)

Изображение слайда
32

Слайд 32

Метод: Двигаясь от начала массива к концу, будем в каждой паре соседних элементов больший располагать справа. Когда дойдем до конца массива, на последнее место попадет максимальный. Этот элемент уже не будет перемещаться. Теперь повторяем процесс, но последний элемент уже не рассматриваем и т.д. Если при очередном просмотре массива перестановок не было, значит массив упорядочен и дальнейшие просмотры не нужны.

Изображение слайда
33

Слайд 33

Схема алгоритма процедуры упорядочивания элементов массива по возрастанию методом пузырька

Изображение слайда
34

Слайд 34

Задача. Разработать программу, производящую сортировку двух массивов A и В по возрастанию значений элементов. В программе организовать в виде отдельных подпрограмм (методов) вывод элементов массива на терминал (в одну строку), сортировку массива (методом пузырька). Головная (вызывающая) программа имеет линейную структуру, все подробности скрыты внутри подпрограмм (процедур). Это пример хорошего структурирования программы.

Изображение слайда
35

Слайд 35

public class Сортировки{ // проект 6_2_1 public static void пузырек (int [ ] A) { boolean flag; for (int m = A.length-1; m > 0; m--){ flag = true; for (int j = 0; j < m; j++) if (A[ j ] > A[ j+1]) { int b = A[ j ]; A[ j ] = A[ j+1]; A[ j+1] = b; flag = false; } if (flag) break; } } // пузырек Продемонстрирована возможность давать классам, методам (и переменным) имена на кириллице. Но делать это категорически не рекомендется во избежание синтаксических ошибок (ряд букв на кириллице и латинице пишется одинаково). Лучше назвать метод sort V ial или booble S ort, а класс – Sort.

Изображение слайда
36

Слайд 36

public static void putArr (int X[ ]) { for (int i = 0; i < X.length; i++) System.out.print f ( "%d ", X[i]); System.out.println(); } //putArr public static void main (String[ ] args) { int [ ] массив = {2,7,6,4,10,5,1,5}; // лучше int [ ] arr; System.out.println ("До сортировки"); putArr (массив); пузырек (массив); System.out.println ("После сортировки"); putArr (массив); System.out.println (); //--------------------------------------- int [ ] arr = {2, 3, 5,4, 6, 7, 8, 9 }; System.out.println ("До сортировки"); putArr ( arr ); пузырек ( arr ); System.out.println ("После сортировки"); putArr ( arr ); } //main } // class

Изображение слайда
37

Слайд 37

Изображение слайда
38

Слайд 38

Мини-тест На перестановке каких элементов основан метод пузырька? Каково условие досрочного выхода из цикла просмотров массива?

Изображение слайда
39

Слайд 39

Сортировка методом пузырька (вариант2) Метод: (вариант 2). С каждой парой связано еще две пары: с (A[i], A[i+1]) связаны (A[i-1], A[i] ) и (A[i+1], A[i+2] ) (кроме первой и последней пар). Поэтому, если в паре (A[i], A[i+1]) сделана перестановка, на всякий случай надо начать проверку с самого начала. Если дошли до последней пары, а перестановки не потребовались, значит массив отсортирован.

Изображение слайда
40

Слайд 40

Промоделируйте алгоритм вручную на рассмотренном выше тестовом примере. Изобразите алгоритм двумя другими (правильными) способами.

Изображение слайда
41

Слайд 41

public class Sort { // проект 6_2_2 public static void booble S ort2 (int [ ] A) { boolean flag = false; while( !flag ) { //Пока не отсортирован flag = true; //Вот он оптимизм! for (int j = 0; j < A.length-1; j++) if (A[ j ] > A[ j+1]) { int b = A[ j ]; A[ j ]=A[ j+1]; A[ j+1] = b; flag = false; //Произошла перестановка break; //Выходим из for сразу после перестановки, //чтобы начать просмотр массива сначала } //if } //while } // booble S ort 2 Задание: Промоделировать вручную работу метода на приведенных выше примерах.

Изображение слайда
42

Слайд 42

public static void putArr (int X[ ]) { for (int i = 0; i < X.length; i++) System.out.print f ( "%d ", X[i]); System.out.println(); } //putArr public static void main (String[ ] args){ int [ ] arr1 = {2, 7, 6, 4, 10, 5, 1, 5}; System.out.println ("До сортировки"); putArr ( arr1 ); booble S ort 2 ( arr1 ); System.out.println ("После сортировки"); putArr ( arr1 ); System.out.println (); //--------------------------------------- int [ ] arr2 = {2, 3, 5,4, 6, 7, 8, 9 }; System.out.println ("До сортировки"); putArr ( arr2 ); booble S ort 2 ( arr2 ); System.out.println ("После сортировки"); putArr ( arr2 ); } //main } // class На том же тестовом примере метод booble S ort 2 даст те же результаты, что и пузырек (проверьте!)

Изображение слайда
43

Слайд 43

Тест – это совокупность входных и соответствующих им выходных данных, на которых проверяется правильность работы программы. Набор тестов должен быть полным (чтобы проверить все ветви алгоритма), и, желательно, не избыточным. С чего начать разработку программы? Анализируем, что должно быть на входе программы (входные данные) и что должно быть на выходе программы (выходные данные). Затем рисуем какой-либо пример (например, матрицу, которую нужно транспонировать, и матрицу, полученную в результате транспонирования). Фактически, это один из тестовых примеров, на котором будем проверять программу впоследствии. Анализируя этот пример, пытаемся понять логику поставленной задачи (что и как должна делать программа). Затем рисуем схему алгоритма (укрупненную, с обобщенными блоками – подпрограммами), т.е. уже в самом начале предполагаем структурирование алгоритма. Далее определяем входные и выходные данные для каждой их подпрограмм, строим алгоритмы для подпрограмм (если подпрограммы очень простые, то можно обойтись и без рисования схемы алгоритма) и набор тестов для каждой подпрограммы и для программы в целом. Набор тестов должен быть полным (проверять все возможные ситуации), но не избыточным. Кодируем программу на языке программирования. Проверяем работу подпрограмм и программы на тестовых примерах. Проводим отладку (можно пользоваться отладчиком BlueJ или вставлять «отладочные печати»). В технологии объектного программирования есть свои особенности.

Изображение слайда
44

Слайд 44

Идея (2). Прямой выбор. Минимальный из всех элементов должен иметь индекс 0. Минимальный среди оставшихся элементов должен иметь индекс 1, и т.д. Это следует из соотношения A[0] ≤ A[1] ≤ A[2] ≤… ≤ A[ n -1] (*). Метод. Находим минимальный элемент в массиве и меняем местами с А[0], находим минимальный среди оставшихся и меняем местами с A[1], находим минимальный среди оставшихся и меняем местами с A[2], …, находим минимальный из A[A.length-2] и A[A.length-1] и меняем местами с A[A.length-2].

Изображение слайда
45

Слайд 45

Минимальный элемент перемещен в начало, сдвигаем границу просмотра

Изображение слайда
46

Слайд 46

Изображение слайда
47

Слайд 47

Обоснование алгоритма. Пусть элементы A[0], A[1], …, A[i-1] - уже на своих местах. Сейчас следует найти минимальный элемент среди A[ i ], A[ i+1],…, A[ A.length-1 ] и его номер, и поменять местами с элементом A[ i]. Тогда на своих местах будут A[0], A[1], …, A[i-1], A[i]. Количество правильно расположенных элементов увеличилось на 1. Следует это действие выполнить для i = 0, 1, …, A.length – 2, и получится упорядоченный массив.

Изображение слайда
48

Слайд 48

Схема алгоритма сортировки методом прямого выбора n = A.length Адрес массива ( A)

Изображение слайда
49

Слайд 49

public class Sort { // проект 6.2.3 public static void sort D irect C hoice (int [ ] A) { //сортировка прямым выбором int min, nMin ; //переменные для минимума и // номера мин. элемента int i, j; //переменные циклов for(i = 0; i < A.length-1; i++) { // -- поиск минимального э лемента и его номера--- min = A[ i ]; nMin = i; for( j = i + 1; j < A.length; j++) if(A[ j ] < min ) { min = A[ j ]; nMin = j; } //--- минимум найден и записан в min ----- A[ nMin ] = A[ i ]; A[ i ] = min ; //поменяли местами } // for i } // sort D irect C hoice

Изображение слайда
50

Слайд 50

public static void putArr (int X[ ]) { for (int i = 0; i < X.length; i++) System.out.print f ( "%d ", X[ i ]); System.out.println(); } //putArr public static void main (String[ ] args){ int [ ] arr1 = {2, 7, 6, 4, 10, 5, 1, 5}; System.out.println ("До сортировки"); putArr ( arr1 ); sort D irect C hoice ( arr1 ); System.out.println ("После сортировки"); putArr ( arr1 ); System.out.println (); //--------------------------------------- int [ ] arr2 = {2, 3, 5, 4, 6, 7, 8, 9 }; System.out.println ("До сортировки"); putArr ( arr2 ); sort D irect C hoice ( arr2 ); System.out.println ("После сортировки"); putArr ( arr2 ); } //main } // class

Изображение слайда
51

Слайд 51

Идея (3). Прямые вставки Предположим, что у нас есть упорядоченный массив из i элементов: A[0] ≤ A[1] ≤ A[2] ≤… ≤ A[i-1]. Если бы удалось добавить к этим элементам еще один – Х, сохраняя упорядоченность, длина (упорядоченного) массива увеличилась бы на 1.

Изображение слайда
52

Слайд 52

Метод прямых вставок

Изображение слайда
53

Слайд 53

i = 1 Было:

Изображение слайда
54

Слайд 54

Было:

Изображение слайда
55

Слайд 55

Было:

Изображение слайда
56

Слайд 56

Было:

Изображение слайда
57

Слайд 57

Было:

Изображение слайда
58

Слайд 58

( полностью)

Изображение слайда
59

Слайд 59

Метод. Когда потребуется добавить к упорядоченному массиву один элемент (Х), следует найти место для этого элемента. Место определяется соотношением: A [слева] ≤ Х < A[справа]. Можно начать с упорядоченного "массива", содержащего всего один элемент. Поскольку после одного шага длина упорядоченной части массива увеличивается, повторяя шаги, можно упорядочить массив любой длины. При поиске места для Х движемся по массиву влево, пока элемент массива больше Х. Как только обнаружен элемент, не больший Х, справа от него следует поместить Х. Движение влево возможно, пока номер элемента больше 0.

Изображение слайда
60

Слайд 60

Алгоритм. Добавляем к упорядоченному массиву элемент A[ i ]. (Значение i должно изменяться от 1 до A.length-1 с шагом 1). Для этого "прячем" A[ i ] в «карман» Х, освобождая место i. Последовательно, начиная с элемента A[ j = i-1] (условие: j≥0 ), сравниваем A[j] с Х. Если Х<A[ j ], элемент А[ j ] перемещаем в позицию [ j+1], уменьшаем j и повторяем проверку. Иначе (при Х ≥ A[ j ] ) в позицию [ j+1] помещаем Х и проверки заканчиваем. Если дошли до элемента A[0] и место для Х не найдено, его место – позиция 0.

Изображение слайда
61

Слайд 61

Адрес массива ( A) n = A.length Схема алгоритма сортировки методом прямых вставок

Изображение слайда
62

Слайд 62

public class Sort { // проект 6.2.4 public static void s ort D irect I nsertion (int [ ] A) { int x, i, j; // j должно быть «видно» в цикле for i for (i = 1; i < A.length; i++) { x = A[ i ]; for ( j = i - 1; j >= 0; j --) if ( x < A[ j ] ) A [ j+1] = A[ j ]; else break; A[ j+1] = x; } //for i } // s ort D irect I nsertion

Изображение слайда
63

Слайд 63

public static void putArr (int X[ ]) { for (int i = 0; i < X.length; i++) System.out.print f ( "%d ", X[i]); System.out.println(); } //putArr public static void main (String[ ] args){ int [ ] arr1 = {2, 7, 6, 4, 10, 5, 1, 5}; System.out.println ("До сортировки"); putArr ( arr1 ); s ort D irect I nsertion ( arr1 ); System.out.println ("После сортировки"); putArr ( arr1 ); System.out.println (); //----------------------------- int [ ] arr2 = {2, 3, 5, 4, 6, 7, 8, 9 }; System.out.println ("До сортировки"); putArr ( arr2 ); s ort D irect I nsertion ( arr2 ); System.out.println ("После сортировки"); putArr ( arr2 ); } //main } // class Четыре рассмотренных метода сортировки на одних и тех же тестовых примерах дают одинаковый результат. Проверьте!

Изображение слайда
64

Слайд 64

Изображение слайда
65

Слайд 65

Сумма первых n членов арифметической прогрессии: S n = (2a 1 + d(n - 1))n / 2, где a 1 – первый член прогрессии; d – разность прогрессии. Оценка трудоемкости алгоритма Худший случай: Для пузырьковой сортировки (вариант, рассмотренный первым): T= ( n -1)*t + ( n -2)*t + ( n -3)*t +…+ 1*t ( n – число элементов массива, t –среднее время на перестановку двух элементов массива) a 1 = t; d = t; T = S n = ( 2 t + t(n - 1))n / 2 = 0.5t ( n 2 + n ). При больших n главная составляющая – n 2. Максимальное время выполнения простых методов сортировки – порядка n 2 t. Более быстрый метод сортировки ( рекурсивный) будет рассмотрен позже.

Изображение слайда
66

Слайд 66

Алгоритмы обработки двумерных массивов (матриц)

Изображение слайда
67

Слайд 67

Задача – проект 6_3. Сформировать массив X, содержащий максимальные элементы столбцов матрицы Y.

Изображение слайда
68

Слайд 68

В Java многомерный массив – это массив массивов Вспомним пройденный материал: ! !

Изображение слайда
69

Слайд 69

Задача интересна тем, что внешний цикл организован по столбцам, а внутренний по строкам. На каждой итерации внешнего цикла фиксируется номер столбца. Внутренний цикл «пробегает» по всем номерам строк, т.е. перебираются все элементы в зафиксированном столбце.

Изображение слайда
70

Слайд 70

public class MatrArrDemo{ // проект 6_3 public static int[ ] MaxInColomn (int Y[ ][ ]){ int X [ ] = new int [ Y[0].length ]; // создает массив X, //состоящий из Y[0].length элементов (слов памяти) for (int j = 0; j < Y[0].length; j++) { int max = Y[0][ j ]; for (int i = 1; i < Y.length; i++) if (Y[ i ][ j ] > max) max = Y[ i ][ j ]; X[ j ] = max; } //for j return X; // метод возвращает адрес // созданного одномерного массива } //MaxInColomn type arr_name [ ] = new type [n]; – создание одномерного массива с именем arr_name, состоящего из n элементов (слов памяти) типа type. Можно ли обойтись без переменной max?

Изображение слайда
71

Слайд 71

public static void putMatr (int Y[ ][ ]) { for (int i = 0; i < Y.length; i++) { for (int j = 0; j < Y[0].length; j++) System.out. printf ( "% 5d",Y[ i ][ j ]); System.out.println(); } //for i } //putMatr public static void putArr (int X[ ]) { for (int i = 0; i < X.length; i++) System.out. printf ( "% 5d", X[i]); System.out.println(); } //putArr

Изображение слайда
72

Слайд 72

public static void main (String args [ ]){ int Y [ ] [ ] = { {3, 72, -5, -4}, {8, 6, -2, -15}, {-3, -24, 9, -55}, {-1, 14, -27, -1}, {95, 36, 0,-11} }; int A [ ] [ ] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }; System.out.println("Матрица Y:"); putMatr (Y); int X[ ] = MaxInColomn(Y); // ссылочной переменной X присваивается адрес // одномерного int- массива, возвращенный методом MaxInColomn () System.out.println("Массив Х для матрицы Y:"); putArr (X); // в метод putArr () передается значение ссылочной переменной X System.out.println("Матрица A:"); putMatr (A); System.out.println("Массив Х для матрицы A:"); putArr (MaxInColomn(A)); // в метод putArr () передается адрес // одномерного int- массива, возвращенный методом MaxInColomn () } //main } //class

Изображение слайда
73

Слайд 73

Изображение слайда
74

Слайд 74

Перемножение матриц Если надо перемножить квадратные матрицы, то они должны иметь одинаковую размерность.

Изображение слайда
75

Слайд 75

Изображение слайда
76

Слайд 76

Транспонирование матрицы (строки становятся столбцами и наоборот) X i j = A j i i = 0, 1, …, 4; j = 0, 1, …, 4;

Изображение слайда
77

Слайд 77

X i j = A j i i = 0, 1, …, 4; j = 0, 1, …, 3;

Изображение слайда
78

Слайд 78

public class MatrDemo1{ public static int [ ][ ] multiplyMatr ( int A[ ][ ], int B[ ][ ] ) { // перемножение матриц if (A[0].length != B.length) return null ; // выход и // возврат null int [ ][ ] C = new int [A.length] [B[0].length]; for (int i = 0; i < A.length; i++) for (int j = 0; j < B[0].length; j++) { C[ i ][ j ] = 0; for (int k = 0; k < B.length; k++) C[ i ][ j ] = C[ i ][ j ] + A[ i ][ k ] * B[ k ][ j ]; } return C ; // выход и возврат ссылки на матрицу С }

Изображение слайда
79

Слайд 79

public static int [ ][ ] transpMatr (int A[ ][ ]){ // транспонирование матрицы int [ ][ ] X = new int [A[0].length][A.length]; for (int i = 0; i < A[0].length; i++) for (int j = 0; j < A.length; j++) X[ i ][ j ] = A[ j ][ i ]; return X; }

Изображение слайда
80

Слайд 80

public static void putMatr (int Y[ ][ ]){ if (Y == null){ System.out.println("null"); return; } for (int i = 0; i < Y.length; i++) { for (int j = 0; j < Y[0].length; j++) System.out.printf ("% 5d",Y[ i ][ j ]); System.out.println(); } //for i } //putMatr public static void main (String args [ ]){ int Y1 [ ] [ ] = { {1, 3, 2,}, {6, 4, 5,} }; int Y2 [ ] [ ] = { {3, 2, 1}, {2, 1, 3}, {4, 3, 0} }; Метод multiplyMatr () может вернуть null- ссылку. Предусмотрим это в методе putMatr ().

Изображение слайда
81

Слайд 81

System.out.println(" Матрица Y1:"); putMatr (Y1); System.out.println(" Матрица Y2:"); putMatr (Y2); System.out.println(" Результат транспонирования Y1 :"); putMatr (transpMatr(Y1)); System.out.println(" Результат умножения Y1 и Y2:"); putMatr (multiplyMatr (Y1,Y2)); System.out.println(" Результат умножения Y2 на Y1:"); //null putMatr (multiplyMatr (Y2,Y1)); Y1 = multiplyMatr (Y1,Y2); // переменной Y1 присвоена ссылка на //двумерный массив, которую вернул //метод multiplyMatr System.out.println("Y1=Y1*Y2:"); putMatr (Y1); Y2 = transpMatr (Y1); // переменной Y2 присвоена ссылка на //двумерный массив, которую вернул //метод transpMatr System.out.println("Y2 = transp(Y1):"); putMatr(Y2); System.out.println(" Результат умножения Y2 на Y1:"); putMatr(multiplyMatr (Y2,Y1)); } //main } //class

Изображение слайда
82

Последний слайд презентации: Некоторые алгоритмы для массивов. Методы сортировки. Операции над матрицами

Изображение слайда