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

Сортировщик не сортирует

15.10.2021, 02:19. Показов 911. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется программа, которая принимает из блокнота "d.txt" 2 строки. Первая строка - кол-во элементов в массиве, вторая - элементы собсна. Выглядит это примерно вот так:

20
12 65 48 98 56 25 14 98 56 23 51 48 92 56 12 35 48 95 62 26

Так же есть программа с тремя методами сортировки, реализованными через функции:

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import time
 
# Сортировка методом пузырька
def bubble_sort(array_int):
    start = time.time()
    for i in range(value - 1):
        for j in range(value - i - 1):
            if array_int[j] > array_int[j + 1]:
                buff: object = array_int[j]
                array_int[j] = array_int[j + 1]
                array_int[j + 1] = buff
    end = time.time()
    return "%s" % (end - start)
 
# Сортировка методом выбора
def sel_sort(array_int):
    start = time.time()
    i = 0
    while i < value - 1:
        m = i
        j = i + 1
        while j < value:
            if array_int[j] < array_int[m]:
                m = j
            j = j + 1
        array_int[i], array_int[m] = array_int[m], array_int[i]
        i = i + 1
    end = time.time()
    return "%s" % (end - start)
 
# Сортировка методом вставок
def insertion_sort(array_int):
    start = time.time()
    for i in range(1, value):
        temp = array_int[i]
        j = i
        while (j - 1 >= 0) and (array_int[j - 1] > temp):
            array_int[j - 1], array_int[j] = array_int[j], array_int[j - 1]
            j = j - 1
        array_int[j] = temp
    end = time.time()
    return "%s" % (end - start)
 
# -----------------------------------------------------------------------------------------------------------------------
# Открытие внешних фалов
value = int(open("d.txt").read().split()[0])
array_str = open("d.txt").read().split()[1:]
array_int = [int(x) for x in array_str]
# Выбор способа сортировки
message = (f'\nМетоды сортировки массива:\n'
           f'Метод пузырька - 1\n'
           f'Метод выбора   - 2\n'
           f'Метод вставок  - 3\n\n'
           f'Введите цифру, указывающую на то, каким способом вы хотели бы отсортировать массив: ')
print(message)
sort: int = int(input())
 
# Проверка на правильность ввода
while sort < 1 or sort > 3:
    print('ОШИБКА! Повторите ввод:')
    sort = int(input())
print(array_int)
start_time = time.time()
 
# Циклы сортировки и вывода в блокнот
if sort == 1:
    bubble_sort(array_int)
    f = open('t.txt', 'w')
    f.write(str(value) + '\n' + ' '.join(array_str) + '\n' + 'Сортировка методом Пузырька' + '\n' + (
            "%s -Секунды" % (time.time() - start_time)))
    print(f"Результаты были выведены в блокнот")
elif sort == 2:
    sel_sort(array_int)
    f = open('t.txt', 'w')
    f.write(str(value) + '\n' + ' '.join(array_str) + '\n' + 'Сортировка методом Выбора' + '\n' + (
            "%s -Секунды" % (time.time() - start_time)))
    print(f"Результаты были выведены в блокнот")
elif sort == 3:
    insertion_sort(array_int)
    f = open('t.txt', 'w')
    f.write(str(value) + '\n' + ' '.join(array_str) + '\n' + 'Сортировка методом Вставок' + '\n' + (
            "%s -Секунды" % (time.time() - start_time)))
    print(f"Результаты были выведены в блокнот")
Программа должна вывести в текстовый файл примерно вот это:

1 строка: *кол-во элементов в массиве*
2 строка: *отсортированный массив*
3 строка: *каким методом выполнялась сортировка*
4 строка: *время затраченное на выполнение функции*

И вот проблема в том, что программа выводит всё, но не сортирует элементы.
Намучался сильно в попытках что-то исправить и починить, но, потеряв надежду, пришел сюда
Очень прошу помочь разобраться в чём же дело
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.10.2021, 02:19
Ответы с готовыми решениями:

Не сортирует по весу, по имени и числу сортирует, в чем ошибка
#include&lt;iostream&gt; #include&lt;string&gt; #include&lt;iomanip&gt; using namespace std; struct bagag { const char* name; int chislo; ...

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

Сортировщик
Всем привет ;) Писал прогу на C++ в деве (причем не особо удачно), недавно узнал, что нужно оказывается сделать эту программу с графическим...

2
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
15.10.2021, 02:53
Лучший ответ Сообщение было отмечено andycoo1 как решение

Решение

Заменить везде ' '.join(array_str) на ' '.join(map(str,array_int))

Иначе в файл записывается исходный список, который строчный.
1
0 / 0 / 0
Регистрация: 28.06.2021
Сообщений: 14
15.10.2021, 02:54  [ТС]
Помощь не требуется, полазив по интернету наткнулся на сайт, где всё было очень подробно расписано. Мне стоило оформить код таким образом,
Кликните здесь для просмотра всего текста
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
# Циклы сортировки и вывода в блокнот
if sort == 1:
    bubble_sort(array_int)
    with open("t.txt", "w") as txt_file:
        txt_file.write(str(value) + "\n")
        txt_file.write(" ".join(str(x) for x in array_int) + "\n")
        txt_file.write("Сортировка методом Пузырька" + "\n")
        txt_file.write("%s - Секунды" % (time.time() - start_time))
    print(f"Результаты были выведены в блокнот")
elif sort == 2:
    sel_sort(array_int)
    with open("t.txt", "w") as txt_file:
        txt_file.write(str(value) + "\n")
        txt_file.write(" ".join(str(x) for x in array_int) + "\n")
        txt_file.write("Сортировка методом Выбора" + "\n")
        txt_file.write("%s - Секунды" % (time.time() - start_time))
    print(f"Результаты были выведены в блокнот")
elif sort == 3:
    insertion_sort(array_int)
    with open("t.txt", "w") as txt_file:
        txt_file.write(str(value) + "\n")
        txt_file.write(" ".join(str(x) for x in array_int) + "\n")
        txt_file.write("Сортировка методом Вставок" + "\n")
        txt_file.write("%s - Секунды" % (time.time() - start_time))
    print(f"Результаты были выведены в блокнот")
как вдруг всё заработало
Однако, возможно, люди, которые не первый год программируют на Python укажут мне на некоторые ошибки в коде, или посоветуют, как можно было бы улучшить данный код? Был бы очень признателен.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.10.2021, 02:54
Помогаю со студенческими работами здесь

Сортировщик
Вовочка недавно узнал, что есть не только русские буквы, но и латинские. Естественно он предположил, что существуют и слова из этих...

Сортировщик
Нужна помощь! Я только начал изучать os Написал программу сортировщик Мне оставили комментарии Путь к папке должен...

Вложенный сортировщик
Теперь Людмила просит вас создать функцию sorted2(data, key), способную сортировать вложенные списки, содержащие целые числа. ...

Вложенный сортировщик
Оксана просит вас создать функцию sorted2(data, key), способную сортировать вложенные списки, содержащие целые числа. Сортировка...

Универсальный сортировщик
Допустим, class Sorter&lt;T&gt; . Проблема сравнить 2 элемента типа Т. Можно как-то указать, что тип T будет из сравниваемых типов?


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru