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

Создать функцию сортировки списков методом Пузырька

30.09.2022, 09:41. Показов 1963. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создать функцию сортировки списков методом Пузырьки!

Функция должна принимать список в качестве параметра.

Также ваша программа должна выводить исходный (не отсортированный) список,

а также после сортировки, соответственно, уже отсортирован список.

Размер списка не менее 20 эл.!

ОБЯЗАТЕЛЬНО НУЖНО СОЗДАТЬ ИМЕННО ФУНКЦИЮ сортировки списков методом Пузырьки!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.09.2022, 09:41
Ответы с готовыми решениями:

Создать функцию сортировки списков методом Пузырька
Создать функцию сортировки списков методом Пузырька! Функция должна принимать список в качестве параметра. Также ваша программа должна...

Составить функцию сортировки массива случайных чисел по убыванию и возрастанию методом пузырька (в Matlab.)
Составить сценарий , в котором сформировать вектор нормально распределённых случайных чисел длиной 50 элементов и отсортировать его методом...

Написать функцию для сортировки одномерного массива методом пузырька. Массив и его длина – параметры функции
Написать функцию для сортировки одномерного массива методом пузырька. Массив и его длина – параметры функции. Помогите написать прогу на...

9
 Аватар для avdivo
303 / 213 / 112
Регистрация: 03.12.2016
Сообщений: 409
30.09.2022, 14:22
Ruslan_S,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
from random import randint
 
def sort_bubble(arr):
    print(arr)
    done = False
    while not done:
        done = True
        for i in range(len(arr)-1):
            if arr[i] > arr[i+1]:
                arr[i], arr[i+1] = arr[i+1], arr[i]
                done = False
    print(arr)
 
sort_bubble([randint(1, 100) for _ in range(20)])
1
78 / 73 / 19
Регистрация: 18.05.2021
Сообщений: 287
30.09.2022, 14:50
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
def sort_bubble(ls):
    ls = ls.copy()
    for i in range(len(ls) - 1):
        for j in range(len(ls) - 1):
            if ls[j] > ls[j+1]:
                ls[j], ls[j+1] = ls[j+1], ls[j]
    return ls
 
ls = [5, 4, 3, 2, 1]
print(ls)
print(sort_bubble(ls))
 
# >>> [5, 4, 3, 2, 1]
# >>> [1, 2, 3, 4, 5]
# >>>
П.С. Классическая реализация для ЯП питон, часто приводится в учебниках.
П.П.С ls = ls.copy() можно убрать. Добавлен, чтобы избежать изменения списка, который передан в функцию. Во избежание неожиданностей.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38171 / 21106 / 4307
Регистрация: 12.02.2012
Сообщений: 34,703
Записей в блоге: 14
30.09.2022, 19:24
Цитата Сообщение от -_human_- Посмотреть сообщение
Классическая реализация для ЯП питон, часто приводится в учебниках.
- классическая студенческая (плохая) реализация. Код, приведенный выше avdivo значительно лучше.
1
78 / 73 / 19
Регистрация: 18.05.2021
Сообщений: 287
30.09.2022, 19:38
Catstail, я знаю. Но для кого ещё бывают учебники, как не для студентов?
Мой код понятнее - всё строго по алгоритму. А уже поняв его, можно размышлять над оптимизацией.
П.С.
И цикл while медленнее, чем for. Поэтому хоть на уровне алгоритма код avdivo лучше, но по факту неизветно, чей код будет работать быстрее в каждом конкретном случае. И заведомо, что в худшем случае мой код быстрее.

Добавлено через 41 секунду
П.П.С. Если убрать copy
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38171 / 21106 / 4307
Регистрация: 12.02.2012
Сообщений: 34,703
Записей в блоге: 14
30.09.2022, 19:46
-_human_-, ты не понял самого главного. Дело не в том, что "быстрее" - for или while. Суть совсем в другом. Представь, что сортируется список [1,2,3,...,1000000,999999] - миллион элементов, но только два элемента стоят не на месте. Сколько раз прокрутится внешний цикл for в твоем коде? 999 тысяч раз. Вхолостую. А код avdivo отсортирует массив за два прохода.
1
78 / 73 / 19
Регистрация: 18.05.2021
Сообщений: 287
30.09.2022, 19:49
Catstail, да я понимаю...

Добавлено через 27 секунд
Я просто дал простейший код, вдруг человек, задавший вопрос захочет разобраться. И тогда мой код лучше - он проще.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38171 / 21106 / 4307
Регистрация: 12.02.2012
Сообщений: 34,703
Записей в блоге: 14
30.09.2022, 19:50
-_human_-, учиться нужно на правильных примерах...
0
78 / 73 / 19
Регистрация: 18.05.2021
Сообщений: 287
30.09.2022, 20:05
Catstail, оно понятно. Да и вряд ли кто-то будет изучать сортировку пузырьком, плохо зная циклы...
В общем, я лишь продублировал учебник ¯\_(ツ)_/¯
Показалось, что так будет лучше для спрашивающего.

Добавлено через 4 минуты

Не по теме:

Кстати, прикольно. Если добавить ту же оптимизацию, что и в коде avdivo, то код в большинстве случаев выполняется быстрее через while, но в некоторых быстрее через for. Интересно с чем связанно.



Добавлено через 1 минуту
Кстати, я не прав. Даже в худшем случае быстрее через while. Странно.
0
2431 / 1474 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
30.09.2022, 20:18
Python
1
2
3
4
5
6
7
8
9
def sort(arr):
    for j in range(len(arr)):
        f = False
        for i in range(len(arr) - 1 - j):
            if arr[i] > arr[i + 1]:
                arr[i], arr[i + 1] = arr[i + 1], arr[i]
                f = True
        if not f:
            break
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.09.2022, 20:18
Помогаю со студенческими работами здесь

Нужно создать программу сортировки методом пузырька в Visual Basic и блок схему к коду программы
А также чтобы ввод цифр был вручную.

Отсортировать массив по возрастанию двумя способами – методом «пузырька» и методом «быстрой сортировки»
Заполнить массив из 500 элементов случайными числами в интервале . Отсортировать его по возрастанию двумя способами – методом «пузырька» и...

Отсортировать массив по возрастанию двумя способами – методом «пузырька» и методом «быстрой сортировки» .
Доброго времени суток)Помогите пожалуйста написать вроде поняла быструю сортировку, а как написать что не получается....не знаю как.... ...

Отсортировать массив R(20) методом «пузырька» по убыванию. Составить программу для сортировки массива Х(15) методом
Помогите

Сортировки массива методом пузырька и методом прямого включения
сортировки массива методом пузырька и методом прямого включения Очень срочно надо помогите плис


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru