Язык Си в примерах/Сортировка: различия между версиями
Содержимое удалено Содержимое добавлено
DannyS712 (обсуждение | вклад) м <source> -> <syntaxhighlight> (phab:T237267) |
|||
Строка 6:
Один из простейших алгоритмов решения — метод «пузырька».
<
#include <stdio.h>
#define N 1000
Строка 32:
}
}
</syntaxhighlight>
Понятно, что после первого «пробега» самый большой элемент массива окажется на последнем месте.
Строка 61:
два элемента массива. В нашем случае это
<
int cmp(const void *a, const void *b) {
return *(int*)a - *(int*)b;
}
</syntaxhighlight>
В силу указанной универсальности функции сортировки, функция сравнения получает в качества аргумента адреса двух блоков, которые нужно сравнить и возвращает 1, 0 или -1:
Строка 79:
Таким образом, мы получили следующую программу
<
#include <stdio.h>
#include <stdlib.h>
Строка 99:
return 0;
}
</syntaxhighlight>
== Динамическое выделение памяти ==
Строка 105:
Ниже приведена программа, где память под массив выделяется динамически:
<
#include <stdio.h>
#include <stdlib.h>
Строка 127:
return 0;
}
</syntaxhighlight>
Функция <tt>malloc<tt> (от англ. ''memory allocation'' --- ''выделение памяти'') делает запрос к ядру операционной системы по выделению заданного количества байт. Единственный аргумент этой функции — число байт, которое вам нужно. В качестве результата функция возвращает указатель на начало выделенной памяти. Указатель на начало выделенной памяти &mbsah — это адрес ячейки памяти, начиная с которого идут N байт, которые вы можете использовать под любые свои нужды. Всю память, которая была выделена с помощью функции <tt>malloc<tt>, нужно освобождать с помощью функции <tt>free</tt>. Аргумент функции <tt>free</tt> — это указатель на начало выделенной когда-то памяти.
== Программа упорядочения строк в алфавитном порядке ==
<
#include <stdlib.h>
#include <string.h>
Строка 149:
return 0;
}
</syntaxhighlight>
Обратите внимание на сложное приведение типов.
|