Advanced C#. Part 1

21
eleks.com eleks.com Advanced C#. Part 1 Collections. Generics. Algorithms Efficiency. Sorting algorithms.

Transcript of Advanced C#. Part 1

Page 1: Advanced C#. Part 1

eleks.com eleks.com

Advanced C#. Part 1Collections. Generics. Algorithms Efficiency. Sorting algorithms.

Page 2: Advanced C#. Part 1

System.Collections*

* - залишились в минулому після виходу .NET 2.0

•Колекція динамічно змінного розміруArrayList

•Колекція пар “ключ/значення”, організована на хеші ключа

HashTable•LIFO стек об’єктів. Реалізує методи Push(), Pop(),

Peek()Stack

•Черга об’єктів, працююча за принципом FIFO. Enqueue(), Dequeue(), Peek()

Queue

•Колекція пар “ключ/значення”, відсортованих по ключу

SortedList

Page 3: Advanced C#. Part 1

Основні інтерфейси колекцій

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()…

Page 4: Advanced C#. Part 1

Дженеріки (Generics)Класи

Інтерфейси

Структури

Методи

Page 5: Advanced C#. Part 1

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>

Page 6: Advanced C#. Part 1

eleks.com

Демонстрація 1• Робота з колекціями• Реалізація власної колекції, унаслідуваної

від IList<T>

Page 7: Advanced C#. Part 1

Foreach

Page 8: Advanced C#. Part 1

Yield• Ключове слово yield додане в C# 2.0 для зручного створення

ітераторів• Використовується для повернення значення об’єкту енумератора

або сигналу про завершення ітерації. Може бути таких типів:yield return [value];yield break;

•yield return повертає один елемент з колекції і зміщує позицію до наступного елементу. yield break зупиняє ітерування

Page 9: Advanced C#. Part 1

eleks.com

Демонстрація 2• Ітератор для повернення чисел Фібоначчі,

менших N

Page 10: Advanced C#. Part 1

Індексатори

Page 11: Advanced C#. Part 1

Null і Nullable<T>Типи, що допускають null:• Всі reference-типи• Nullable<T>, де T – value-тип

Характеристики Nullable-типівo Властивості HasValue і Value – для перевірки на наявність значення

в nullable і отримання доступу до ньогоo T? – скорочений запис для Nullable<T>o ?? та ?. – синтаксичний цукор для перевірок на nullo Вкладенні nullable-типи не дозволені (Nullable<Nullable<T>>)

Page 12: Advanced C#. Part 1

Класифікація алгоритмів за парадигмами• Divide and conquer

• Dynamic programming

• The greedy method

• Linear programming

• Reduction (transform and conquer)

• Using graphs

• The probabilistic and heuristic paradigm

• Neural networks

Page 13: Advanced C#. Part 1

Оцінка складності алгоритмів• За часом та пам’яттю

• Big-O нотація (нотація Ландау)

Опис Порядок росту Приклад

Константний 1 Додавання двох чисел

Логарифмічний logN Двійковий пошук

Лінійний N Пошук максимума

Лінійно-логарифмічний NlogN Divide and conquer (сортування злиттям)

Квадратичний/Кубічний/... N2/N3/… Подвійні/потрійні/... повні цикли

Експоненціальний 2N Перевірка всіх підмножин

Page 14: Advanced C#. Part 1

Поширені алгоритми сортування

Page 15: Advanced C#. Part 1

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)

Page 16: Advanced C#. Part 1

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

Page 17: Advanced C#. Part 1

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

Page 18: Advanced C#. Part 1

Merge Sort

Page 19: Advanced C#. Part 1

Quick Sort

Page 20: Advanced C#. Part 1

eleks.com

Практичне завдання

Page 21: Advanced C#. Part 1

Рекомендована література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”