.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++;
                    }
            }
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4 из 5
Похожие ответы