Язык Си в примерах/Сортировка: различия между версиями

Содержимое удалено Содержимое добавлено
Поставил теги <source>
Строка 6:
Один из простейших алгоритмов решения — «метод пузырька».
<source lang="c">
<code>#include<stdio.h>
#define N 1000
int main() {
Строка 22 ⟶ 23 :
}
}
}</code>
</source>
 
Понятно, что после первого «пробега» самый большой элемент массива окажется на последнем месте
Строка 39 ⟶ 41 :
<code>qsort(a, n, sizeof(int), cmp );</code>
 
Это функция, описанная в стандартной библиотеке [[w:enru:ANSI C]] и объявлена в заголовочном файле <tt>stdlib.h</tt>.
 
Поэтому в начале программы нужно добавить
Строка 52 ⟶ 54 :
два элемента массива. В нашем случае это
 
<source lang="c">
<code>int cmp(const void *a, const void *b) {
return *(int*)a - *(int*)b;
}</code>
</source>
 
В силу указанной универсальности функции сортировки, функция сравнения получает в качества аргумента адреса двух блоков, которые нужно сравнить и возвращает 1, 0 или -1:
Строка 68 ⟶ 72 :
Таким образом, мы получили следующую программу
 
<source lang="c">
<code>#include <stdio.h>
#include <stdlib.h>
#define N 1000
Строка 86 ⟶ 91 :
}
return 0;
}</code>
</source>
 
== Динамическое выделение памяти ==
Строка 92 ⟶ 98 :
Ниже приведена программа, где память под массив выделяется динамически:
 
<source lang="c">
#include <stdio.h>
#include <stdlib.h>
Строка 114 ⟶ 121 :
return 0;
}
</source>
 
 
Функция <tt>malloc<tt> (от англ. ''memory allocation'' --- ''выделение памяти'') делает запрос к ядру операционной системе по выделению заданного количества байт. Единственный аргумент этой функции &mdash; число байт, которое вам нужно. В качестве результата функция возвращает указатель на начало выделенной памяти. Указатель на начало выделенной памяти &mbsah это адрес ячеки памяти, начиная с которого идут N байт, которые вы можете использовать под любые свои нужды. Всю память, которая была выделена с помощью функции <tt>malloc<tt>, нужно освобождать с помощью функции <tt>free</tt>. Аргумент функции <tt>free</tt> &mdash; это указатель на начало выделенной когда-то памяти.
 
== Программа упорядочения строк в алфавитном порядке ==
<source lang="c">
 
#include <stdlib.h>
#include <string.h>
Строка 136 ⟶ 143 :
return 0;
}
</source>
 
Обратите внимание на сложное приведение типов.