2. Основы алгоритмов Flashcards

1
Q
A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q
A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q
A

При значительных n, конечно первый. Но при малых n нельзя сказать ничего определенного.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Какая сложность будет у функции, капитализирующей первый символ в строке?

A

O(N) — строки в C# менять нельзя. Можно создать новую.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Какие известные вам структуры данных позволяют получить значение по ключу за O(1)?

A
  • Array
  • List
  • Dictionary
  • Hashtable
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Пусть xs - массив целых чисел.

Чему может быть равна сложность поиска максимального элемента Max(xs)?

Может ли поиск максимума в массиве иметь сложность O(1)? Если нет, то почему? Если да, то при каких условиях?

A

Обычно сложность линейная, но если массив отсортирован, то найти максимум можно за O(1)—просто взять последний или первый элемент в зависимости от сортировки

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Посчитайте сумму элементов массива не используя циклов

A

int Sum(int[] array, int i = 0){ if (i < array.Length) return array[i] + Sum(array, i + 1); return 0;}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Как вычислить максимальную глубину рекурсии для конкретной функции?Почему для двух функций может отличаться максимальная глубина рекурсии?

A

Стек исчерпан, когда получили StackOverflowException.Но в последних версиях .NET Framework его нельзя поймать. Чтобы посчитать число вызовов нужно использовать счетчик в некотором поле, а результаты куда-то сохранять: в файл или на консоль.Максимальная глубина рекурсии может отличаться в зависимости от количество параметров у функции.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Перечислите алгоритмические и емкостные сложности сортировки: пузырек, слияния, быстрая

A

Пузырек - O(n*n) и O(1)Слиянием - O(n*log(n)) и O(n)Быстрая - O(n*n) и O(n)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Опишите идею сортировки:- пузырек- слияния- быстрая

A

Пузырек: каждое значение в массиве всплывает до нужной позицииСлияния:массив разбивается на две части, каждая сортируется этим же алгоритмом, затем отсортированные части объединяютсяБыстрая: выбрать некоторый элемент и разделить массив на часть, которая строго меньше и все остальные, затем отсортировать полученные части

How well did you know this?
1
Not at all
2
3
4
5
Perfectly