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

Поставил теги <source>
(Поставил теги <source>)
Один из простейших алгоритмов решения — «метод пузырька».
<source lang="c">
<code>#include<stdio.h>
#define N 1000
int main() {
}
}
}</code>
</source>
 
Понятно, что после первого «пробега» самый большой элемент массива окажется на последнем месте
<code>qsort(a, n, sizeof(int), cmp );</code>
 
Это функция, описанная в стандартной библиотеке [[w:enru:ANSI C]] и объявлена в заголовочном файле <tt>stdlib.h</tt>.
 
Поэтому в начале программы нужно добавить
два элемента массива. В нашем случае это
 
<source lang="c">
<code>int cmp(const void *a, const void *b) {
return *(int*)a - *(int*)b;
}</code>
</source>
 
В силу указанной универсальности функции сортировки, функция сравнения получает в качества аргумента адреса двух блоков, которые нужно сравнить и возвращает 1, 0 или -1:
Таким образом, мы получили следующую программу
 
<source lang="c">
<code>#include <stdio.h>
#include <stdlib.h>
#define N 1000
}
return 0;
}</code>
</source>
 
== Динамическое выделение памяти ==
Ниже приведена программа, где память под массив выделяется динамически:
 
<source lang="c">
#include <stdio.h>
#include <stdlib.h>
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>
return 0;
}
</source>
 
Обратите внимание на сложное приведение типов.
Анонимный участник