Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Билеты по проге.docx
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
630.61 Кб
Скачать
  1. Метод барьера при быстрой сортировке массива

Суть метода состоит в том, что выбирается некоторый элемент - барьер просмотра; затем просматривается массив слева до обнаружения элемента, большего чем барьер, и справа от барьера до обнаружения элемента, меньшего чем барьер, после чего обнаруженные элементы меняются местами. Эта процедура выполняется до тех пор, пока оба просмотра не встретятся в середине барьера. Рекурсивно упорядочиваем подмассивы, лежащие слева и справа от опорного элемента.

Одной из трудностей данного методы является выбор барьера (медианы). Медианой для n элементов называется элемент, меньший или равный половине из n элементов и больший или равный другой половине из n элементов.(В отсортированном массиве стоит посередине).

  1. Сортировка методом вставки. В отсортированной части массива последний элемент – барьер.

Такой случай повторяющегося процесса с 2 условиями окончания позволяет использовать метод барьера, поставить барьер а(0) = х. Тогда между j=I и x=a[i] вставить a[0]=x; и можно убрать проверку условия j>0. Расширить диапазон в A[n+1].

  1. for (i=1;i<=N-1; i++)

  2. { j=i;

  3. x=A [i];

  4. while (( j>0)&&(x<A[ j-1 ])) //Пока не дошли до левого конца и пока элемент меньше предыдущего.

  5. { A [ j ]=A[ j-1 ]; //Ищем место, раздвигаем

  6. J --;

  7. }

  8. A[ j ]=x;

  9. }

Билет 7. Процедуры и функции в С.

Функция разбивает большие вычислительные задачи на набор маленьких и позволяет программистам пользоваться разработками предшественников. Так же функция позволяет скрыть детали реализации программы, избежав нежелательного вмешательства одной части программы на другую.

Функция в общем виде:

Возвр_тип имя_функции(список_параметров)

{

Тело_функции

}

«Список параметров» можно и не писать вообще, что равносильно написанию в скобках слова «void». Так же в список параметров может входить множество одинаковых по типу переменных. f ( int i, int k, int j) /* правильное объявление*/

f ( int i, k, float j) /* неправильное, у переменной k должен быть

собственный спецификатор типа */

Возвращение значение в функцию «return»

Если функция не определена словом void (т.е. не является процедурой), то в нее можно вернуть некоторое значения. Осуществляется это с помощью оператора return(выражение); - скобки не обязательны. Кроме возвращения значения, return служит немедленных выходом из функции ( передачи управления в вызывающую функцию без передачи значения).

Виды функций: 1) Простые вычисления. Пример: sqrt(), sin() – выполняют операции над своими аргументами. 2) Функции, которые обрабатывают информацию и возвращают значения, которые показывают, успешно ли была выполнена операция. 3) Процедуры (функции, у которых нет явно возвращаемых значений). Пример: exit().

Процедуры

- функции, у которых нет явно возвращаемых значений.

Void a(int x, int y) { … } – процедура. int a(int x, int y) { … } – функция. dummy () {} ; - функция-заглушка. Ничего не делает и ничего не возвращает. В том месте, где должно быть что-то,но его нет.

Формальные и фактические параметры функции.

Те параметры, что написаны в тексте процедуры, называются формальными, а те, которые пишутся в вызывающей программе - фактическими. При вызове процедуры или функции формальным параметрам ставятся в соответствие фактические.

Формальный параметр — аргумент, указываемый при объявлении или определении функции.

Фактический параметр — аргумент, передаваемый в функцию при ее вызове;

Int func(int a); - формальный параметр а, может отсутствовать. // описание функйии

Int func(int b) //формальный параметр, имя параметра может не совпадать с указанным при объявлении функции

{

Return 0;

}

int main()

{

int c=0;

myfunction(c); // Вызов функции. c - фактический параметр.

return 0;

}

Порядок и типы формальных параметров должны быть одинаковыми в определении функции и во всех ее объявлениях. Типы фактических параметров при вызове функции должны быть совместимы с типами соответствующих формальных параметров. Тип формального параметра может быть любым основным типом, структурой, объединением, перечислением, указателем или массивом. Если тип формального параметра не указан, то этому параметру присваивается тип int.

Передача параметров в функцию:

  1. Вызов по значению .

При вызове по значению, выражение-аргумент вычисляется, и полученное значение связывается ] с соответствующим формальным параметром функции (обычно посредством копирования этого значения в новую область памяти). При этом, если язык разрешает функциям присваивать значения своим параметрам, то изменения будут касаться лишь этих локальных копий, но видимые в месте вызова функции значения останутся неизменными по возвращении.

Системы типов некоторых языков, использующих вызов по значению и непосредственно не поддерживающих вызов по ссылке, предоставляют возможность явно определять ссылки (объекты, ссылающиеся на другие объекты), в частности, указатели (объекты, представляющих собой адреса других объектов в памяти ЭВМ). Их использование позволяет симулировать вызов по ссылке внутри семантики вызова по значению. Такое решение применяется, например, в языках Си и ML. Оно не является самостоятельной стратегией вычисления — язык по-прежнему вызывает по значению. Симуляцию вызова по ссылке в языке Си. Переменные целого типа и указатели передаются по значению. Но так как указатель содержит адрес внешней переменной, её значение изменится.