Практикум по информатике и информационным технологиям. I. Обработка данных на ПК
95 Необходимо предусмотреть, чтобы в процессе поиска начальное значение z по крайней мере один раз было заменено числом из массива jc . В некоторых случаях заранее указать такое значение z затруднительно, поэтому в качестве начального значения принимается первый элемент массива jc [0], а цикличе ская работа алгоритма начинается со второго элемента массива. Именно по этому принципу построен следующий фрагмент программы поиска макси мального элемента массива: intn=10, zj,x[10]; z=x[0]; j=0; for(int i=l; i<n; i++) if(z<x[i]) { z=x[i]; j=i; } В результате вычислений переменная z получит значение, равное наи большему числу в массиве jc . 10.4.2. Задача сортировки и упорядочения массива При решении этой задачи требуется сформировать новый массив, со- стояш,ий из элементов исходного массива, но расположенных в соответствии с предложенным критерием. Возможно два подхода при решении этой зада чи. В первом случае исходный массив требуется сохранить для других задач, во втором случае исходный массив можно изменять, переставляя его элемен ты. Во втором случае программа получается более компактной, поэтому рас смотрим этот случай, тем более, что первый случай легко сводится ко второ му путем предварительного переноса содержимого исходного массива в но вый рабочий массив, что позволяет сохранить исходный массив. Пример. Дан массив а\п\. Необходимо переставить этот массив таким образом, чтобы элементы массива были размеш,ены в порядке возрастания их величины. Ход решения этой задачи следуюш,ий: 1. В исходном массиве а отыскать наименьший по величине элемент. Запомнить номер этого элемента. 2. Найденный элемент поменять местами с первым элементом масси ва. 3. Повторить поиск наименьшего элемента в массиве со второго до п- го элемента. 4. Новый наименьший элемент поменять местами со вторым элемен том массива. 5. Этапы 3 и 4 повторить с уменьшаюш,имся остатком массива до пол ного упорядочения массива. Рассматриваемая задача решается с помощью следующего фрагмента программы: for(int i=0; i<n-l; i++) { z=a[i]; k=i;
Made with FlippingBook
RkJQdWJsaXNoZXIy MTY0OTYy