.NET 4.x Из массива целых чисел, исключить одинаковые элементы - C#
Формулировка задачи:
Помогите, с написанием консольной программы.
Основная задача
:Из массива целых чисел, элементы которого расположены по возрастанию (имеются совпадающие), исключить одинаковые элементы.Общие рекомендации по выполнению задания.
Работа с интерфейсом программы должна быть интуитивно понятной. Пользователь указывает размерность массива и вводит элементы массива. Массивы содержат только целые числа. Алгоритм должен преобразовывать элементы массива путем удаления (включения) одного или нескольких элементов. В программе должна быть предусмотрена проверка на возможность (или невозможность) выполнения преобразования массива. Заранее Спасибо!Решение задачи: «.NET 4.x Из массива целых чисел, исключить одинаковые элементы»
textual
Листинг программы
class Program { public static int[] RemoveDuplicates(int[] s) { HashSet<int> set = new HashSet<int>(s); int[] result = new int[set.Count]; set.CopyTo(result); return result; } //ОЦЕНКА СЛОЖНОСТИ АЛГОРИТМА O(N) static void Main(string[] args) { Console.Write("Введите элементы массива через пробел: "); int[] myArray = Console.ReadLine().Split(' ').Select(int.Parse).ToArray(); Console.WriteLine("\nИсходный массив: "); foreach(int i in myArray) Console.Write("{0} ", i); Console.WriteLine("\n"); Console.WriteLine("\nОтсортированный массив: "); Program Sort = new Program(); Sort.BucketSort(ref myArray); foreach(int i in myArray) Console.Write("{0} ", i); Console.WriteLine("\n"); Console.WriteLine("Дубликаты в массиве: "); for(int i = 0;i < myArray.Length - 1;i++) if(myArray[i] == myArray[i + 1]) Console.Write("{0} ",myArray[i]); Console.WriteLine("\n"); myArray = RemoveDuplicates(myArray); Console.WriteLine("Массив без дубликатов: "); foreach(int i in myArray) Console.Write("{0} ", i); Console.WriteLine("\n"); Console.ReadLine(); } private void BucketSort(ref int[] items) { // Предварительная проверка элементов исходного массива if(items == null || items.Length < 2) return; // Поиск элементов с максимальным и минимальным значениями int maxValue = items.Max(); int minValue = items.Min(); // Создание временного массива "карманов" в количестве, // достаточном для хранения всех возможных элементов, // чьи значения лежат в диапазоне между minValue и maxValue. // Т.е. для каждого элемента массива выделяется "карман" List<int>. // При заполнении данных "карманов" элементы исходного не отсортированного массива // будут размещаться в порядке возрастания собственных значений "слева направо". // List<int>[] bucket = new List<int>[maxValue - minValue + 1];//Создаем массив в который будем создавать отдельные пакеты для чисел из данного нам массива. for(int i = 0; i < bucket.Length; i++) bucket[i] = new List<int>(); //Создаем массивы в массиве который мы определили размерность ПТУЕМ вычитания МИН элемента из МАХ элемента // Занесение значений в пакеты // for(int i = 0; i < items.Length; i++) bucket[items[i] - minValue].Add(items[i]); //Вся суть сортировки в этой строке // Восстановление элементов в исходный массив // из карманов в порядке возрастания значений int position = 0; for(int i = 0; i < bucket.Length; i++) { if(bucket[i].Count > 0) for(int j = 0; j < bucket[i].Count; j++) { items[position] = bucket[i][j]; position++; } } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д