Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Пирамидальная сортировка






Пирамидальная сортировка является первым из рассматриваемых методов, быстродействие которых оценивается как O(n log n)

template< class T >

void downHeap(T a[], long k, long n) { // процедура просеивания следующего элемента // До процедуры: a[k+1]...a[n] - пирамида // После: a[k]...a[n] - пирамида T new_elem; long child; new_elem = a[k]; while(k < = n/2) // пока у a[k] есть дети { child = 2*k; if(child < n & & a[child] < a[child+1]) // выбираем большего сына child++; if(new_elem > = a[child]) break; // иначе a[k] = a[child]; // переносим сына наверх k = child; } a[k] = new_elem; } template< class T > void heapSort(T a[], long size) { long i; T temp; // строим пирамиду for(i = size / 2 - 1; i > = 0; --i) downHeap(a, i, size-1); // теперь a[0]...a[size-1] пирамида for(i=size-1; i > 0; --i) { // меняем первый с последним temp = a[i]; a[i] = a[0]; a[0] = temp; // восстанавливаем пирамидальность a[0]...a[i-1] downHeap(a, 0, i-1); }}

32. Си. Символьные строки: объявление символьных строк

Объявить строку = выделить ей место в памяти и присвоить имя.

char s[80]; //выделяется 80 байт, в строке – «мусор»)

 

char s1[80] = " abc"; //выделяется 80 байт, занято 4 байта
(с учетом '\0')

 

char qqq[] = «Руслан"; // выделяется 7 байт

(с учетом '\0')

 

Задача: ввести слово с клавиатуры и заменить все буквы «а» на буквы «б».

 

main()

{

char q[80];

int i;

printf(" Введите строку\n");

scanf(" %s", q);

i = 0;

while (q[i]! = '\0') {

if (q[i] == 'а') q[i] = 'б';

i ++;

}

printf (" Результат: %s ", q);

}

33. Си. Символьные строки: функции для работы со строками

Таблица 1 — Функции для работы со строками и символами
Функция Пояснение
strlen(имя_строки) определяет длину указанной строки, без учёта нуль-символа
Копирование строк
strcpy(s1, s2) выполняет побайтное копирование символов из строки s2 в строку s1
strncpy(s1, s2, n) выполняет побайтное копирование n символов из строки s2 в строку s1. возвращает значения s1
Конкатенация строк
strcat(s1, s2) объединяет строку s2 со строкой s1. Результат сохраняется в s1
strncat(s1, s2, n) объединяет n символов строки s2 со строкой s1. Результат сохраняется в s1
Сравнение строк
strcmp(s1, s2) сравнивает строку s1 со строкой s2 и возвращает результат типа int: 0 –если строки эквивалентны, > 0 – если s1< s2, < 0 — если s1> s2 С учётом регистра
strncmp(s1, s2) сравнивает n символов строки s1 со строкой s2 и возвращает результат типа int: 0 –если строки эквивалентны, > 0 – если s1< s2, < 0 — если s1> s2 С учётом регистра
stricmp(s1, s2) сравнивает строку s1 со строкой s2 и возвращает результат типа int: 0 –если строки эквивалентны, > 0 – если s1< s2, < 0 — если s1> s2 Без учёта регистра
strnicmp(s1, s2) сравнивает n символов строки s1 со строкой s2 и возвращает результат типа int: 0 –если строки эквивалентны, > 0 – если s1< s2, < 0 — если s1> s2 Без учёта регистра
Обработка символов
isalnum(c) возвращает значение true, если с является буквой или цифрой, и false в других случаях
isalpha(c) возвращает значение true, если с является буквой, и false в других случаях
isdigit(c) возвращает значение true, если с является цифрой, и false в других случаях
islower(c) возвращает значение true, если с является буквой нижнего регистра, и false в других случаях
isupper(c) возвращает значение true, если с является буквой верхнего регистра, и false в других случаях
isspace(c) возвращает значение true, если с является пробелом, и false в других случаях
toupper(c) если символ с, является символом нижнего регистра, то функция возвращает преобразованный символ с в верхнем регистре, иначе символ возвращается без изменений.
Функции поиска
strchr(s, c) поиск первого вхождения символа св строке s.В случае удачного поиска возвращает указатель на место первого вхождения символа с.Если символ не найден, то возвращается ноль.
strcspn(s1, s2) определяет длину начального сегмента строки s1, содержащего те символы, которые не входят в строку s2
strspn(s1, s2) возвращает длину начального сегмента строки s1, содержащего только те символы, которые входят в строку s2
strprbk(s1, s2) Возвращает указатель первого вхождения любого символа строки s2 в строке s1
Функции преобразования
atof(s1) преобразует строку s1 в тип double
atoi(s1) преобразует строку s1 в тип int
atol(s1) преобразует строку s1 в тип long int
Функции стандартной библиотеки ввода/вывода < stdio>
getchar(с) считывает символ ссо стандартного потока ввода, возвращает символ в формате int
gets(s) считывает поток символов со стандартного устройства ввода в строку sдо тех пор, пока не будет нажата клавиша ENTER

 

34. Си. Указатели: описание, инициализация, операции с указателями


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал