Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
 Аватар для Sigin
226 / 225 / 112
Регистрация: 20.10.2013
Сообщений: 808
.NET 4.x

Сортировка слиянием

22.11.2015, 14:57. Показов 1975. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть желающие реализовать сортировку слиянием без рекурсии (generic, iterative merge-sort), с обобщёнными типами и с перегрузкой для сортировки части массива (index - индекс включая от которого сортируется последовательность длинной length внутри массива array)?

Добавлено через 11 часов 15 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
internal static class MergeSort
    {
        public static void Sort<T>(T[] array, int index, int length, Comparison<T> comparison)
        {
            var b = new T[length];
            for (var width = index + 1; width < length; width = 2 * width)
            {
                for (var i = index; i < length; i = i + 2 * width)
                    Merge(array, b, i, Math.Min(i + width, length), Math.Min(i + 2 * width, length), comparison);
                Array.Copy(b, 0, array, index, length);
            }
        }
        private static void Merge<T>(T[] a, T[] b, int left, int midle, int right, Comparison<T> comparison)
        {
            var l = left;
            var m = midle;
            for (var j = left; j < right; j++)
                if (l >= midle || (m < right && comparison(a[l], a[m]) > 0))
                    b[j] = a[m++];
                else
                    b[j] = a[l++];
        }
    }
Критикуем
1
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.11.2015, 14:57
Ответы с готовыми решениями:

Сортировка слиянием
Как найти left and right public static void MergeSort(int input, int left, int right) { if (left &lt; right) { int...

Сортировка слиянием
Помогите пожалуйса! Ошибка: process is terminated due to stackoverflowexception static List&lt;string&gt; M_sort(List&lt;string&gt; stm1) ...

Сортировка слиянием
Пытаюсь реализовать сортировку слиянием, функция merge написана правильно. Не понимаю как реализовать саму функцию сортировки, постоянно...

2
TheGreatCornholio
 Аватар для Woldemar89
1255 / 733 / 285
Регистрация: 30.07.2015
Сообщений: 2,408
22.11.2015, 15:13
Вдруг кому понадобиться - пример использования:
C#
1
2
3
int[] arr = { 2, 4, 5, 6, 7, 34, 3, 4, 56, 2, 354, 5, 4, 4, 5 };
 
MergeSort.Sort<int>(arr, 0, arr.Length, (x,y) => x > y ? 1 : x == y ? 0 : -1); //по возрастанию
1
 Аватар для Ярослав92
6 / 6 / 5
Регистрация: 07.03.2016
Сообщений: 89
01.06.2017, 16:52
Знаю что тема стара, но все же сделаю пост своей реализации и хотел бы получить отзыв(критику) этого ужаса!!!
C#
1
2
3
4
5
6
7
8
9
10
        public static IEnumerable<T> MSort<T>(this IEnumerable<T> list) where T : IComparable<T>
        {
            if (!list.Any()) return Enumerable.Empty<T>();
            Int32 begin = 0;
            Int32 end = list.Count();
            Int32 middle = (begin + end) / 2;
            IEnumerable<T> first = list.Skip(begin).Where(item => middle + 1 > end || (begin <= middle + 1 && BooleanFunctions<T, Boolean>.Less(list.ElementAt(begin), list.ElementAt(middle + 1))));
            IEnumerable<T> second = list.Skip(middle + 2).Where(item => middle + 2 > end || (begin <= middle + 2 && BooleanFunctions<T, Boolean>.Less(list.ElementAt(middle + 2), list.ElementAt(end))));
            return first.Concat(second);
        }
BooleanFunctions<T, Boolean> - это производный класс System.Linq.Expressions.Expression.

Критикуем!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.06.2017, 16:52
Помогаю со студенческими работами здесь

Сортировка массива слиянием
Здравствуйте, помогите написать программу которая сортирует одномерный массив слиянием. Заранее спасибо.

Сортировка Слиянием и Пирамидой!
Привет всем) Вот знаете нигде не нашел кода этих сортировок на C# , можете помочь? оч.нужно.... и срочно(

Сортировка слиянием используя MPI
Прошу помощи - есть код на C# сортировка одномерного массива методом слияния (merge sort). Необходимо переписать его используя MPI, как это...

Сортировка слиянием в веб сервисе
Задаем 2 массива и объединяем в 1 отсортированный. Если максимальный элемент в этих двух массивах находится в массиве 1, то не работает, а...

Сортировка естественным слиянием на массиве
Здравствуйте, необходимо реализовать сортировку естественным слиянием на массиве, находил алгоритмы на других языках, пробовал переписать,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru