Сортировка простыми вставками

Просматривается последовательность чисел а1,…,аn и каждый очередной элемент аi вставляется на подходящее место в уже упорядоченную совокупность а1,…,аi-1. Это место определяется последовательным сравнением аi с упорядоченными элементами а1,…,аi-1.

 

    j   i      
2 7 12 23 9 13 31 15

 


2 7 12 23 9 13 31 15

     
 

 

 


2 7 12 23 9 13 31 15

 

2 7 12 12 23 13 31 15

 

 


2 7 9 12 23 13 31 15

 

 

Текст программы

 

 void main()

 {float a[30]={6,1,34,16,8,32,56,3,8,4},dop;

int n,i,j,k;

 

n=10;

            for (i=0;i<n;i++)

             printf(" %5.1f",a[i]);

 

for (i=1;i<n;i++)

for (j=0;j<=i-1;j++)

if (a[i]<a[j]) { dop=a[i];

                for (k=i;k>j;k--)

                a[k]=a[k-1];

               a[j]=dop;

               }

 

printf("\n отсортированный массив\n ");

for (i=0;i<n;i++)

printf(" %6.1f",a[i]);

 

}

 

  Пример 4 .7

Задана матрица. Отсортировать положение строк по возрастанию элементов ее первого столбца

 

 void main()

 {

float a[10][10],dop;

int n,m,i,j,f=1;

n=5; m=5;

 printf("\n исходная матрица");

 

   for (i=0;i<n;i++)

   {

printf(" \n");

for (j=0;j<m;j++)

{

a[i][j]=0.001*rand();

printf(" %5.1f",a[i][j]);

}

}

 

while(f==1)

{

f=0;

for (i=0;i<n-1;i++)

if (a[i][0]>a[i+1][0])

             for (j=0;j<m;j++)

             {

               dop=a[i][j];

            a[i][j]=a[i+1][j];

            a[i+1][j]=dop;

            f=1;

             }

}

printf("\n отсортированная матрица");

for (i=0;i<n;i++)

    {

    printf(" \n");

    for (j=0;j<m;j++)

    printf(" %5.1f",a[i][j]);

    }

}




Контрольные вопросы для самопроверки

1. Какие массивы называются упорядоченными?

2. В чем заключается смысл сортировки?

3. Как выглядит алгоритм сортировки выбором?

4. Как выглядит алгоритм сортировки обменами?

5. Как выглядит алгоритм сортировки простыми вставками?

 



ФУНКЦИИ

 

Функция - это часть программы, описывающая выполнение заданного набора действий. В языке С любая программа - это функция с именем main(). Функций могут быть стандартными или разработаны программистом. Стандартные функции - это готовые к использованию функции, например sin(x), cos (x), scanf(...), printf(...) и другие. Они размещены в библиотеках языка С. Для их использования необходимо сначала подключить соответствующий заголовочный файл с помощью директивы препроцессора #include, а затем вызвать необходимую стандартную функцию, указав ее имя и задав значения аргументов. Функции, составленные программистом это новые, дополнительные функции. Эти функции разрабатываются, когда структура программы достаточно сложная, когда необходимо несколько раз выполнить одинаковый набор действий для различных величин и т.п.

Для использования функций в программе необходимо:

1. Описать функцию.

2. Сделать к ней обращения (вызвать функцию).

Описание функции

Форма описания функции имеет вид:

Часть функции  Пояснения
<тип>name(<тип1>арг1,…<тип n> арг n) Заголовок   функции
{ Открытие функции
Описание 1; .... описание n; Описание внутренних (локальных) переменных
оператор 1;  ......... оператор n; Операторная часть, или тело функции
} Закрытие функции

Заголовок функции:

тип>name(<тип1>арг1,…<тип n> арг n)

<тип> – тип результата, который возвращает функция.

Тип может буть определенным – int, float, char, или неопределенным – void. Если тип не определен, то по умолчанию он также может быть- int;

name – идентификатор для обозначения функции

(<тип1>арг1,…<тип n> арг n) – список аргументов функции с указанием их типов.

<тип_і> тип аргумента;

арг_і имя аргумента.

Функция может не иметь аргументов, тогда скобки остаются пустыми.

Вызов функции

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

Имеются две формы вызова функций:

1. Функция имеет тип void. Вызов является самостоятельным оператором:

name (факт_арг1, факт_арг2,...);

Фактические аргументы должны соответствовать списку аргументов в описании функции (по количеству, порядку следования, типам).

 

Пример 6.1: Составить функцию, которая определяет большее значение из двух заданных чисел f = max(x,y) и печатает результат в самой функции.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: