Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Задача 38. Сортировка массива методом поиска максимумаСодержание книги
Поиск на нашем сайте
Условие задачи. Отсортировать заданный целочисленный массив по убыванию методом выбора (методом поиска максимума). Исходные данные представим в виде одномерного массива А из n целых чисел. Результатом будет тот же массив после сортировки. Метод выбора отличается от рассмотренного в предыдущей задаче и состоит в следующем. Для неупорядоченного массива из n элементов ищется максимальный элемент массива и меняется местами с первым элементом, так как максимальный элемент должен находиться на первом месте, а следующие должны располагаться по убыванию. В ходе одного просмотра массива только один элемент встает на свое место. Поэтому просмотр массива и поиск максимального элемента повторяются заново. Так как максимальный элемент после первого просмотра уже стоит на своем месте, то просматривается часть массива от второго элемента до последнего, ищется максимальный и меняется местами со вторым. Такие проходы по массиву повторяются многократно до тех пор, пока из последних двух не будет найден максимальный и поставлен на свое место (предпоследнее). На последнем месте останется самый маленький элемент. Таких проходов потребуется n-1, и каждый раз просматриваемая часть массива уменьшается на один элемент. Алгоритм сортировки использует конструкцию вложенных циклов. Правила использования вложенных циклов рассматривались в примерах 25 и 36. Внешний цикл задает количество просмотров массива n-1. При первом просмотре рассматривается часть массива от первого до последнего, при втором - от второго до последнего, при третьем - от третьего до последнего, при i-м просмотре - от i-го до последнего и так далее. Во внешнем цикле выполняются следующие действия: § запоминание i-го элемента как максимального; § выполнение внутреннего цикла для элементов от i+1 до n, в котором ищется максимальный элемент; § перестановка максимального с i-м элементом. Для перестановки местами максимального элемента с i-м необходимо знать номер этого максимального элемента. Поэтому при поиске наибольшего значения среди элементов от i-го до n-го необходимо запоминать его номер. Введем обозначения: n - количество элементов массива, А - массив из n целых чисел, i - переменная для организации внешнего цикла, j - переменная для организации внутреннего цикла, max – значение максимального элемента массива, imax - номер (индекс) максимального элемента. Структурированная запись алгоритма 38 1. Ввести количество элементов массива n. 2. Ввести элементы массива А. 3. Повторять для i от 1 до n-1 следующие действия: 3.1. Принять за максимум элемент массива А[i], max= А[i]. 3.2. Запомнить номер i в переменной imax, imax=i. 3.3. Повторять для j от i+1 до n 3.3.1. Если А[j] > max то 3.3.1.1. Max=А[j]. 3.3.1.2. imax=j. 3.4. Поменять местами элемент A[imax] с элементом А[i]. 4. Вывести элементы массива А. Схема алгоритма
Текст программы на языке Си #include <stdio.h> #define N 25 int main (void) { int A[N], k, n, i, j, max, imax; printf("Введите количество элементов n\n"); scanf("%d", &n); printf("Введите элементы массива А \n"); for (i=0; i<n; i++) scanf ("%d", &A[i]); k=n-1; for (i=0; i<k; i++) { max= A[i]; imax= i; for (j=i+1; j<n; j++) if (A[j]>max) { imax=j; max=A[j]; } A[imax]= A[i]; A[i]=max; } printf ("Отсортированный массив А \n"); for (i=0; i<n; i++) printf ("%3d", A[i]); return 0; } Текст программы на языке Паскаль Program pr_38; Var a: array of integer; i,j,n,imax:integer; max:integer; begin writeln('Введите количество элементов'); readln(n); setlength(a,n); writeln('Введите элементы массива'); for i:=0 to n-1 do readln(a[i]); for i:=0 to n-2 do begin max:=a[i]; imax:=i; for j:=i+1 to n-1 do if a[j]>max then begin imax:=j; max:=a[j]; end; a[imax]:=a[i]; a[i]:=max; end; writeln('Отсортированный массив'); for i:=0 to n-1 do write(a[i]:3); a:=nil; end.
|
||||
Последнее изменение этой страницы: 2021-04-12; просмотров: 125; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.137.181.194 (0.006 с.) |