Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 18.11.2018
Сообщений: 10

Реализация сортировки слиянием по книге Т.Кормена на python

23.10.2019, 19:59. Показов 1404. Ответов 4

Студворк — интернет-сервис помощи студентам
Я начинающий программист и не могу разобраться, что не так с алгоритмом. Все делал по книге Т.Кормена "Алгоритмы построение и анализ", но выдаёт огромное количество ошибок. Я понимаю принцип сортировки слиянием, но корректно реализовать не могу по книге.

И как можно модифицировать алгоритм сортировки слиянием, чтобы он находил количество инверсий в массиве?

Python
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
b = [1, 9, 3, 9, 4, 7, 11, 2, 15, 6, 5, 8]
# p, q, r индексы нумерующие элементы массива, такие что p <= q < r
def merge(a, p, q, r):
    n1 = q - p + 1
    n2 = r - q
    L = []; R = []
 
    for i in range(0, n1):
        L.append(a[p + i  - 1 ])
 
    for j in range(0, n2):
        R.append(a[q + j])
 
    L.append(0)
    R.append(0)
    i = 0
    j = 0
 
    for k in range(p, r + 1):
        if L[i] < R[j]:
            a[k] = L[i]
            i += 1
        else:
            a[k] = R[i]
            j += 1
    return a
 
def Merge_sort(a, p, r):
    if p < r:
        q = (p + r) // 2
        Merge_sort(a, p, q)
        Merge_sort(a, q + 1, r)
        merge(a, p, q, r)
        print(1)
    return a
 
p = 0
r = len(b)
 
print(Merge_sort(b, p, r))
Спасибо
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.10.2019, 19:59
Ответы с готовыми решениями:

Реализация сортировки слиянием по книге Т. Кормена
Я начинающий программист и не могу разобраться, что не так с алгоритмом. Все делал по книге Т.Кормена &quot;Алгоритмы построение и...

Реализация алгоритма сортировки слиянием по книге Кормана "Алгоритмы, построение и анализ"
Пытаюсь реализовать алгоритм сортировки слиянием по &quot;псевдоязыку&quot; из книги. Выходной массив отсортирован неверно при любом наборе данных....

Реализация алгоритма сортировки слиянием
помогите, пожалуйста, с реализацией алгоритма сортировки слиянием на VBA.

4
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
23.10.2019, 20:10
AlexLorem, какие ошибки, на какие строки?
0
0 / 0 / 0
Регистрация: 18.11.2018
Сообщений: 10
23.10.2019, 20:15  [ТС]
На 40, 31, 33, 20
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,667
Записей в блоге: 29
23.10.2019, 20:16
AlexLorem, теперь первую часть вопроса прочти и ответь как можно подробнее (трейс ошибок)
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38168 / 21103 / 4307
Регистрация: 12.02.2012
Сообщений: 34,692
Записей в блоге: 14
23.10.2019, 20:47
Как вариант:

Python
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
def merge_arrs(x,y):
    ix=0
    iy=0
    nx=len(x)
    ny=len(y)
    r=[]
    while(True):
        if ix==nx:
            for j in range(iy,ny):
                r+=[y[j]]
                break
            break
        if iy==ny:
            for j in range(ix,nx):
                r+=[x[j]]
                break
            break
        if (x[ix]<y[iy]):
            r+=[x[ix]]
            ix+=1
        else:
            r+=[y[iy]]
            iy+=1
    return r
    
def merge_sort_a(x):
    i1=0
    i2=1
    n=len(x)
    if n==1: return x[0]
    r=[]
    while(i2<=n-1):
        r+=[merge_arrs(x[i1],x[i2])]
        i1+=2
        i2+=2
    if i1==(n-1):
        r+=[x[i1]]
    return merge_sort_a(r)
    
def merge_sort(x):
    return merge_sort_a(list(map(lambda z : [z],x)))
    
print(merge_sort([1,2,3,4,5,6,1,2,3,4,5,-9,-9,11,-4]))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.10.2019, 20:47
Помогаю со студенческими работами здесь

Реализация алгоритма сортировки слиянием
Имеется массив строк вида char lent где каждая строка уже отсортирована по возрастанию. Нужно реализовать слияние. Просмотрел в...

Реализация сортировки слиянием в отдельном потоке
Здравствуйте. Получил задание одновременно запустить сортировку одного и того же массива с помощью двух сортировок (Пузырьком и Слиянием)....

Реализация внешней сортировки с трехленточным слиянием
Помогите пожалуйста! Дали курсовую, но я никак не могу реализовать эту внешнюю сортировку Есть куча сайтов...

Реализация восходящего алгоритма сортировки слиянием на C++
Мне задано 2 массива на 100 элементов каждый. Нужно отсортировать восходящей сортировкой слиянием

Програмная реализация 4-х путевой сортировки слиянием
Совсем туго пошла внешняя сортировка, особенно сортировка слиянием. Но возникло задание - реализовать сортировку 4-х путевым слиянием....


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru