6. Алгоритм : 1. n = Vvod ( x ); /* Ввод n и массива x */ 2. Sort ( x , n ); /* Сортировка массива x по возрастанию*/ 3. Вывод сортированного по возрастанию массива x
8. Алгоритм функции ввода данных int Vvod (float x[]) { Ввод n; for (i=0; i<n; i++) Ввод x[i]; Возврат n ; }
9. Вывод массива x Вывод заголовка "Упорядоченные числа:"; for (i=0; i<n; i++) Вывод x[i];
10. Метод последовательного нахождения максимума 2.5 6 14 -3 10 // рассматривается n элементов 2.5 6 10 -3 14 2.5 6 10 -3 // рассматривается n-1 элементов 2.5 6 -3 10 2.5 6 -3 // рассматривается n-2 элементов 2.5 -3 6 2.5 - 6 // рассматривается n-3 элементов -3 2.5
11. Алгоритм функции сортировки массива x по возрастанию void Sort (float x[], int n) { for ( k = n -1; k >0; k --) { Определение максимума среди элементов x[0], ... , x[k] и его индекса imax . Обмен: x[i max ] <--> x[ k ]; }
12. 3 этап Определение максимума среди элементов x[0], ... , x[k] и его индекса imax .
14. Программа: #include <stdio.h> #define NMAX 100 /* Макс-е количество входных чисел */ /* Функция ввода данных * / int Vvod ( float x []) { int n; /* Количество чисел */ int i; /* Индекс текущего числа */ printf ("Введите количество чисел"); scanf ("%d", &n); printf (" Введите числа "); for (i=0; i<n; ++i) scanf("%f", &x[i]); return n; }
15. /* Функция сортировки x массива по возрастанию */ void Sort (float x[], int n) { int k; /* Максимальный индекс просмотра*/ float r ; /* Для обмена */ int imax ; /* Индекс максимального элемента */ int i; /* Индекс текущего числа */ for ( k = n -1; k >0; k --) { imax =0; for (i =1; i <= k; i++) if (x[i] > x[imax]) imax = i; /* Обмен x [ imax ] и x [ k ] */ r = x[imax]; x[imax] = x[k]; x[k] = r; } }
16. /* Главная функция */ void main (void) { float x[NMAX]; /* Обрабатываемые числа */ int n; /* Количество чисел */ int i; /* Индекс текущего числа */ /* 1. Ввод массива x */ n = Vvod(x); /* 2. Сортировка массива x по возрастанию */ Sort(x,n); /* 3. Вывод массива x */ printf("Упорядоченные числа:"); for (i=0; i<n; ++i) printf (" %4.1f", x[i]); }