Advanced C#. Part 1
-
Upload
eleksdev -
Category
Technology
-
view
1.273 -
download
0
Transcript of Advanced C#. Part 1
eleks.com eleks.com
Advanced C#. Part 1Collections. Generics. Algorithms Efficiency. Sorting algorithms.
System.Collections*
* - залишились в минулому після виходу .NET 2.0
•Колекція динамічно змінного розміруArrayList
•Колекція пар “ключ/значення”, організована на хеші ключа
HashTable•LIFO стек об’єктів. Реалізує методи Push(), Pop(),
Peek()Stack
•Черга об’єктів, працююча за принципом FIFO. Enqueue(), Dequeue(), Peek()
Queue
•Колекція пар “ключ/значення”, відсортованих по ключу
SortedList
Основні інтерфейси колекцій
IList- Count- GetEnumerato
r()- Add(),Remove(
)- Clear()…
IEnumerator- Current- MoveNext()- Reset()
IDictionary- Keys- Values- GetEnumerato
r()- Add(),
Remove()…
IEnumerable- GetEnumerato
r()
ICloneable- Clone()
ICollection- Count- GetEnumerato
r()…
Дженеріки (Generics)Класи
Інтерфейси
Структури
Методи
System.Collections.Generics Узагальнені колекції Інтерфейси
•List<T>•Dictionary<TKey, TValue>•Queue<T>•SortedDictionary<T>•Hashset<T>•SortedSet<T>•KeyValuePair<T>•Stack<T>
…
•IEnumerable<T>•IDictionary<TKey, TValue>•ICollection<T>•IList<T>•IEnumerator<T>•IComparer<T>•ISet<T>•IReadOnlyList<T>
…
eleks.com
Демонстрація 1• Робота з колекціями• Реалізація власної колекції, унаслідуваної
від IList<T>
Foreach
Yield• Ключове слово yield додане в C# 2.0 для зручного створення
ітераторів• Використовується для повернення значення об’єкту енумератора
або сигналу про завершення ітерації. Може бути таких типів:yield return [value];yield break;
•yield return повертає один елемент з колекції і зміщує позицію до наступного елементу. yield break зупиняє ітерування
eleks.com
Демонстрація 2• Ітератор для повернення чисел Фібоначчі,
менших N
Індексатори
Null і Nullable<T>Типи, що допускають null:• Всі reference-типи• Nullable<T>, де T – value-тип
Характеристики Nullable-типівo Властивості HasValue і Value – для перевірки на наявність значення
в nullable і отримання доступу до ньогоo T? – скорочений запис для Nullable<T>o ?? та ?. – синтаксичний цукор для перевірок на nullo Вкладенні nullable-типи не дозволені (Nullable<Nullable<T>>)
Класифікація алгоритмів за парадигмами• Divide and conquer
• Dynamic programming
• The greedy method
• Linear programming
• Reduction (transform and conquer)
• Using graphs
• The probabilistic and heuristic paradigm
• Neural networks
Оцінка складності алгоритмів• За часом та пам’яттю
• Big-O нотація (нотація Ландау)
Опис Порядок росту Приклад
Константний 1 Додавання двох чисел
Логарифмічний logN Двійковий пошук
Лінійний N Пошук максимума
Лінійно-логарифмічний NlogN Divide and conquer (сортування злиттям)
Квадратичний/Кубічний/... N2/N3/… Подвійні/потрійні/... повні цикли
Експоненціальний 2N Перевірка всіх підмножин
Поширені алгоритми сортування
Bubble Sort (5 1 4 2 8) (1 5 4 2 8)(1 5 4 2 8) (1 4 5 2 8)(1 4 5 2 8) (1 4 2 5 8)(1 4 2 5 8) (1 4 2 5 8)
(1 4 2 5 8) (1 4 2 5 8)
(1 4 2 5 8) (1 2 4 5 8)
(1 2 4 5 8) (1 2 4 5 8)
(1 2 4 5 8) (1 2 4 5 8)
Selection Sort
3 7 4 9 5 2 6 11 3 7 4 9 5 2 61 2 3 7 4 9 5 61 2 3 7 4 9 5 61 2 3 4 7 9 5 61 2 3 4 5 7 9 61 2 3 4 5 6 7 9
Insertion Sort3 7 4 9 5 2 6 13 7 4 9 5 2 6 13 7 4 9 5 2 6 13 4 7 9 5 2 6 13 4 7 9 5 2 6 13 4 5 7 9 2 6 12 3 4 5 7 9 6 12 3 4 5 6 7 9 11 2 3 4 5 6 7 9
Merge Sort
Quick Sort
eleks.com
Практичне завдання
Рекомендована література1. Thomas H. Cormen, Charles E. Leiserson, Ronald L.
Rivest, and Clifford Stein “Introduction to Algorithms”
2. D. Knuth “The art of computer programming”3. R. Sedgewick “Algorithms”4. N. Wirth “Algorithms and Data Structures”