Найти - Пользователи
Полная версия: Алгоритм сортировки Шелла.
Начало » Центр помощи » Алгоритм сортировки Шелла.
1
be_smmr
Реализовать алгоритм сортировки Шелла6, идея которого заключается в следующем: выбирая некоторое число 𝑑 𝑛 (𝑛 — длина списка), сортируем элемен- ты, находящиеся на расстоянии 𝑑 друг от друга (всего будет 𝑑 таких подсписков), методом простых вставок. Затем уменьшаем 𝑑 и повторяем данный шаг. Процесс завершается при 𝑑 = 1 обычной сортировкой вставками. В прикрепленном файле есть пример.
Мой код на данный момент выглядит так и у меня проблема с циклами по вставке обратно в список, так как размерность последней строки на 1 меньше, чем первой - выдается ошибка.
import random
n = int(input("N: "))
d = int(input("D: "))
L = [random.randint(-20,20) for i in range(n)]
M = []
k = 0
L1 = []
#Razdeleniye na D(5)
while k <= len(L):
    if len(L1) <= d:
        if k == 0:
            L1.append(L[k::d])
            k = k + 1
        if n - k >= d:
            L1.append(L[k::d])
            k = k + 1
        else:
            break
    else:
        break
print("_____")
print(L)
print(L1[:-1])
L2 = []
#Sortirovka
for i in range(len(L1)):
    L1[i].sort()
#Dobavleniye obratno v spisok
L_2 = []
for i in range(len(L1[:-1])):
    for j in range(len(L1[i][:-1])):
        #Tut sama problema
        L_2.append(L1[j][i])
        if len(L[j][i]) < len(L[j][0]):
            L_2.append((L1[j][i][:-1]))
            break
print("-----")
print(L1[:-1])
print(L_2)
terabayt
разбирайте готовое решение
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB