В этой статье мы обсудим:: Алгоритм Расстояния Хэмминга Алгоритм Расстояния Левенштейна 1. Алгоритм Расстояния Хэмминга: Расстояние Хэмминга измеряет минимальное число замен, необходимых для изменения одной строки в другую.Расстояние Хэмминга между двумя строками одинаковой длины — это число позиций, в которых соответствующие символы различны.Расстояние Хэмминга названо в честь Ричарда Хэмминга. В приведенном ниже примере мы возьмем две […]
C# программа для поиска наиболее частого встречающегося элемента в массиве
В этом примере мы изучим различные способы поиска наиболее частого элемента в массиве в C#. Использование Hashtable: Вы можете использовать Hashtable, чтобы найти наиболее частый элемент в массиве.
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 51 |
using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Using_Hashtable { class Program { static void MaxOccurrence(int[] array, Hashtable hs) { int mostCommom = array[0]; int occurences = 0; foreach (int num in array) { if (!hs.ContainsKey(num)) { hs.Add(num, 1); } else { int tempOccurences = (int)hs[num]; tempOccurences++; hs.Remove(num); hs.Add(num, tempOccurences); if (occurences < tempOccurences) { occurences = tempOccurences; mostCommom = num; } } } Console.WriteLine("Наиболее часто встречающееся число: " + mostCommom + " и оно повторяется " + occurences + " раз"); } public static void Main(string[] args) { int[] array = new int[20] { 3, 6, 8, 5, 3, 5, 7, 6, 4, 3, 2, 3, 5, 7, 6, 4, 3, 4, 5, 7 }; Hashtable hs = new Hashtable(); MaxOccurrence(array, hs); Console.ReadKey(); } } } |
Вывод: Наиболее часто встречающееся число: 3 и оно повторяется 5 раз
Программа на языке C# для реализации обхода бинарного дерева поиска-Preorder, InOrder и Postorder
В этой статье мы узнаем: двоичный поиск дерева обхода в C# Обход Дерева Двоичного Поиска: Существует три метода обхода, используемые с бинарным деревом поиска: inorder, preorder и postorder.— Inorder обход посещает все узлы в BST в порядке возрастания значений ключа узла.— Предварительно упорядоченный обход сначала посещает корневой узел, затем узлы в поддеревьях под левым дочерним […]
Программа на языке C# для реализации стека с операциями Push и Pop
В этом примере мы напишем программу на языке C# для реализации стека с операциями Push и Pop. Основные операции, которые вы выполняете со стеком, — это Push и Pop. Данные добавляются в стек с помощью метода Push. Данные удаляются из стека с помощью метода Pop.
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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Stack { class Program { static void Main(string[] args) { stack st = new stack(); while (true) { Console.Clear(); Console.WriteLine("\nStack Меню(размер -- 10)"); Console.WriteLine("1. Добавить элемент"); Console.WriteLine("2. Показать последний элемент по стеку."); Console.WriteLine("3. Удалить последний элемент."); Console.WriteLine("4. Показать stack элементов."); Console.WriteLine("5. Выход"); Console.Write("Выберите один из вариантов: "); int choice = Convert.ToInt32(Console.ReadLine()); switch (choice) { case 1: Console.WriteLine("Введите элемент : "); st.Push(Console.ReadLine()); break; case 2: Console.WriteLine("Последний элемент: {0}", st.Peek()); break; case 3: Console.WriteLine("Элемент удален: {0}", st.Pop()); break; case 4: st.Display(); break; case 5: System.Environment.Exit(1); break; } Console.WriteLine("\nДля продолжения нажмите любую клавишу..."); Console.ReadKey(); } } } interface StackADT { Boolean isEmpty(); void Push(Object element); Object Pop(); Object Peek(); void Display(); } class stack : StackADT { private int StackSize; public int StackSizeSet { get { return StackSize; } set { StackSize = value; } } public int top; Object[] item; public stack() { StackSizeSet = 10; item = new Object[StackSizeSet]; top = -1; } public stack(int capacity) { StackSizeSet = capacity; item = new Object[StackSizeSet]; top = -1; } public bool isEmpty() { if (top == -1) return true; return false; } public void Push(object element) { if (top == (StackSize - 1)) { Console.WriteLine("Stack заполнен!"); } else { item[++top] = element; Console.WriteLine("Объект продвинулся успешно!"); } } public object Pop() { if (isEmpty()) { Console.WriteLine("Stack пустой!"); return "No elements"; } else { return item[top--]; } } public object Peek() { if (isEmpty()) { Console.WriteLine("Stack пустой!"); return "No elements"; } else { return item[top]; } } public void Display() { for (int i = top; i > -1; i--) { Console.WriteLine("Объекты {0}: {1}", (i + 1), item[i]); } } } } |
Вывод: Stack Меню(размер — 10) Добавить элемент Показать […]
Программа на языке C# для реализации обхода в Односвязном списке
В этом примере мы напишем программу на языке C# для реализации обхода односвязного LinkedList
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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace LinkedList { class singleLinkedlist { private int data; private singleLinkedlist next; public singleLinkedlist() { data = 0; next = null; } public singleLinkedlist(int value) { data = value; next = null; } public singleLinkedlist InsertNext(int value) { singleLinkedlist node = new singleLinkedlist(value); if (this.next == null) { node.next = null; this.next = node; } else { singleLinkedlist temp = this.next; node.next = temp; this.next = node; } return node; } public int DeleteNext() { if (next == null) return 0; singleLinkedlist node = this.next; this.next = this.next.next; node = null; return 1; } public void Traverse(singleLinkedlist node) { if (node == null) node = this; System.Console.WriteLine("Переход по односвязному списку :"); while (node != null) { System.Console.WriteLine(node.data); node = node.next; } } } class Program { static void Main(string[] args) { singleLinkedlist node1 = new singleLinkedlist(100); singleLinkedlist node2 = node1.InsertNext(200); singleLinkedlist node3 = node2.InsertNext(300); singleLinkedlist node4 = node3.InsertNext(400); singleLinkedlist node5 = node4.InsertNext(500); node1.Traverse(null); Console.WriteLine("Удаление из связанного списка..."); node3.DeleteNext(); node2.Traverse(null); Console.ReadKey(); } } } |
Вывод: Переход по односвязному списку : 100 200 300 400 500 Удаление из связанного списка… Переход по односвязному списку : 200 300 500