Приветствую всех, сегодня поговорим о джанериках. Джанерики это общий тип параметров. Обобщение(Универсальные шаблоны) – элемент кода, способный адаптироваться для выполнения общих (сходных) действий над различными типами данных. Универсальные шаблоны были добавлены в язык C# версии 2.0 и среду CLR. Эта возможность CTS (Common Type System — общая система типов), названа обобщениями (generics). Его можно разделить […]
Разбираемся с обобщением
Алгоритмы сортировки массивов на C#
Приветствую всех, сегодня хочу поговорить о алгоритме сортировки. Сегодня в программировании применяются множество готовых решений метод в этой задачи. Но рассмотреть я хотел бы сами алгоритмы сортировки. Сортировка пузырьковым методом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
private static void BubbleSort(int[] array) { for (int i = 0; i < array.Length; i++) for (int j = 0; j < array.Length - 1; j++) if (array[j] > array[j + 1]) { int t = array[j + 1]; array[j + 1] = array[j]; array[j] = t; } } public static void Main() { int[] array = {5,3,4,9,7,2,1,8,6 }; BubbleSort(array); foreach (int e in array) Console.WriteLine(e); Console.ReadKey(); } |
Решил не углубляться в разбор метода, а показать наглядно что происходит внутри метода сортировки. Для этого посмотрим анимацию: Сортировка слиянием:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
static int[] temporaryArray; static void Merge(int[] array, int start, int middle, int end) { var leftPtr = start; var rightPtr = middle + 1; var length = end - start + 1; for (int i = 0; i < length; i++) { if (rightPtr > end || (leftPtr <= middle && array[leftPtr] < array[rightPtr])) { temporaryArray[i] = array[leftPtr]; leftPtr++; } else { temporaryArray[i] = array[rightPtr]; rightPtr++; } } for (int i = 0; i < length; i++) array[i + start] = temporaryArray[i]; } static void MergeSort(int[] array, int start, int end) { if (start == end) return; var middle = (start + end) / 2; MergeSort(array, start, middle); MergeSort(array, middle + 1, end); Merge(array, start, middle, end); } static void MergeSort(int[] array) { temporaryArray = new int[array.Length]; MergeSort(array, 0, array.Length - 1); } public static void Main() { int [] array = {3,2,5,7,8,1,9 }; MergeSort(array); foreach (var e in array) Console.WriteLine(e); Console.ReadKey(); } |
Принцип работы сортировки […]
Как осуществить поиск заданного элемента на C#
Приветствую всех, сегодня рассмотрим несколько алгоритмов поиска. Поиск часто встречается в приложениях с работой текстами или базами данных, и частенько приходиться их применять. Вариаций поисков много, при реализации их стоит учитывать некоторые специфические моменты. А так же скорость работы этих методов. Алгоритм Бинарный поиск:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
static int FindIndexByBinarySearch(int[] array, int element) { var left = 0; var right = array.Length - 1; while (left < right) { var middle = (right + left) / 2; if (element <= array[middle]) right = middle; else left = middle + 1; } if (array[right] == element) return right; return -1; } public static void Main() { var array = new[]{1,2,3,4,5,5,5,6}; Console.WriteLine(FindIndexByBinarySearch(array, 5)); } |
Разберем код, мы создаем целочисленный массив со значениями и передаем […]
Как перебрать все комбинации символов по заданной длине пароля?
Приветствую всех, сегодня мы рассмотрим пример при котором на входе задается длина комбинации, а символы которые будут использоваться в комбинации вносятся в методе MakeSubsets. Давно еще лет 5 назад, когда мне требовалось написать программу для подбора пароля из комбинаций цифр я использовал условные операторы и счетчики. Мой код был ужасен, а длина его была очень […]
Работа с файлами и каталогами C#
Сегодня поговорим о файлах и каталогах. Используем разные примеры методов которые вы будете применять часто в своих программах. Я постарался описать практически все варианты для работы с файлами и каталогами, методы и подходы. Как создать текстовый фаил и сохранить в нем текст? Что бы создать и записать текст в фаил используем следующий пример:
1 |
File.WriteAllText("test.txt", "nookery it's fun!!"); |
[…]