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

Сортировка слиянием, описать каждый шаг

15.11.2022, 23:30. Показов 978. Ответов 4

Студворк — интернет-сервис помощи студентам
Условие: Метод сортировки слияние. Выводить каждый шаг: примерно так: print(f'Массив после {r} - ой итерации: ', *c)
Весь код есть, но нумерацию вывода шага, как появляется новый массив не могу написать.
мой код:
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
print('Метод сортировки слияние')
# Функция должна объединить два списка.
 
def two_list(a,b):
    r = 0
    c = [] # Список, в который будем помещать сортированные элементы.
    i = j = 0 # Два указателя, которые будут указывать на первые элементы a и b.
    while i < len(a) and j < len(b): # Цикл, пока i не привысит длины списка a и пока j не привысит длины списка b.
        if a[i] < b[j]: # Если элемент a меньше элемента b, то добавляем в список c этот(элемент а) элемент.
            c.append(a[i])
            i+=1    # Двигаем указатель i(точнее прибалем 1), чтобы перейти к следующему элементу.
            r+=1
            print(f'Массив после {r} - ой итерации: ', *a)
        else:       # Если элемент a больше элемента b, то помещаем в список элемент b.
            c.append(b[j]) 
            j+=1  # Двигаем указатель j(точнее прибавлем 1), чтобы перейти к следующему элементу.
            r+=1
            print(f'Массив после {r} - ой итерации: ', *b)
    if i<len(a): # Если i не достиг конца длины а, то мы в список с добавлем все, что находилось в а с индексом i и до конца списка а.
        c+=a[i:]
    if j<len(b): # Если j не достиг конца длины b, то мы в список с добавлем все, что находилось в b с индексом j и до конца списка а.
        c+=b[j:]
    return c   # Возвращаем список с.
s = list(map(int, input("Введите элементы: ").split()))
# Функция должна выполнить сортровку.
def sort(s):
    if len(s) == 1: # Если длина списка = 1, то значит, список отосртирован и состоит из 1 элемента.
        return s    # Возвращаем элемент.
    middle = len(s)//2 # Если условие не выполняется, то находим середину списка. Длина списка деленная нацело пополам.
    left = sort(s[:middle]) # Узнаем левую часть списка, то есть от начала спика до середины(middle).
    right = sort(s[middle:])# Узнаем правую часть списка, то есть от середины до конца списка.
    return two_list(left, right) # Объединяем обе эти части, после сортировки.
print("Результат:", *sort(s))
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.11.2022, 23:30
Ответы с готовыми решениями:

Сортировка выбором, Сортировка простыми вставками, Сортировка пузырьком, Сортировка слиянием, Быстрая сортировка Хоара
Имеется список товаров, хранящихся на базе. Каждая строка этого списка содержит: инвентарный номер товара; количество видов этого товара;...

Описать каждый шаг в программе
Помогите описать каждый шаг в программе: #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;conio.h&gt; ...

Описать подробно каждый шаг задачи
Помогите пожалуйста описать подробно каждый шаг задачи: #include &lt;stdio.h&gt; #include &lt;conio.h&gt; //Задание №1 struct Node ...

4
0 / 0 / 0
Регистрация: 09.11.2022
Сообщений: 15
15.11.2022, 23:33  [ТС]
вывод такой:
но должно быть по другому
Миниатюры
Сортировка слиянием, описать каждый шаг  
0
0 / 0 / 0
Регистрация: 09.11.2022
Сообщений: 15
15.11.2022, 23:35  [ТС]
вывод такой:
но должно быть по другому
Заранее спасибо!
Миниатюры
Сортировка слиянием, описать каждый шаг  
0
 Аватар для VistaSV30
987 / 331 / 79
Регистрация: 10.04.2012
Сообщений: 1,241
Записей в блоге: 4
16.11.2022, 00:04
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
import numpy as np
np.random.seed(101)
 
a = list(np.random.randint(10, 99, 70))
 
def merge_sort(nums): 
    if len(nums) > 1: 
        mid = len(nums)//2
        left = nums[:mid] 
        right = nums[mid:]
        merge_sort(left) 
        merge_sort(right) 
 
        i = j = k = 0
 
        while i < len(left) and j < len(right):
            print(i,j,k)  # индексы
            if left[i] < right[j]: 
                nums[k] = left[i] 
                i+=1
            else: 
                nums[k] = right[j] 
                j+=1
            k+=1
 
        while i < len(left): 
            print(i,j,k)  # индексы
            nums[k] = left[i] 
            i+=1
            k+=1
 
        while j < len(right):
            print(i,j,k)  # индексы
            nums[k] = right[j] 
            j+=1
            k+=1
 
print(a)
merge_sort(a)
print(a)
0
0 / 0 / 0
Регистрация: 09.11.2022
Сообщений: 15
23.11.2022, 20:45  [ТС]
Спасибо!

Добавлено через 22 минуты
Я все поняла, кроме этого:
Python
1
2
3
   
merge_sort(left) 
merge_sort(right)
Можете пожалуйста объяснить, что происходит. Заранее спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.11.2022, 20:45
Помогаю со студенческими работами здесь

С++/Сортировка слиянием/(описать обозначение):(
Можете написать обозначение каждой ф-ции, как в примерном документе(фото) в прикрепленном файле письма???Заранее спс:scratch: ...

С++ Сортировка слиянием Отсортируйте данный массив, используя сортировку слиянием
Помогите пожалуйста :') Сортировка слиянием Отсортируйте данный массив, используя сортировку слиянием. Попробуйте написать свою...

Сортировка слиянием. В чем отличие рекурсивной сортировки слиянием от не рекурсивной?
Можете объяснить код static void Merge(int array, int lowIndex, int middleIndex, int highIndex) { var left = lowIndex; ...

Объясните каждый шаг кода
Дан файл, содержащий произвольный текст. Проверить, правильно ли в нем расставлены круглые скобки (т.е. находится ли правее каждой...

Вывести каждый шаг сортировки
Имеется вот такой код шейкерной сортировки, необходимо, чтобы каждый шаг сортировки выводился на экран, все мои попытки не увенчались...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru