Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
Рейтинг 4.74/34: Рейтинг темы: голосов - 34, средняя оценка - 4.74
2 / 2 / 2
Регистрация: 16.08.2017
Сообщений: 72

Функция поиска минимума + сортировка выбором

05.10.2017, 00:05. Показов 6639. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ничего не выводит, в чём ошибка ?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
def find_min(arr):
    minimum = arr[0]
    index_of_min = 0
    for i in range(1, len(arr)):
        if arr[i] < minimum:
            minimum = arr[i]
            index_of_min = i
    return index_of_min
 
 
def SelectionSort(arr):
    new_list = []
    for i in range(len(arr)):
        minimum = find_min(arr)
        new_list.append(arr.pop(minimum))
    return new_list
 
arr = [1,7,8,0]
print(SelectionSort(arr))
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.10.2017, 00:05
Ответы с готовыми решениями:

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

Сортировка массива каждым из 3 способов (пузырьковая сортировка, сортировка выбором, сортировка вставкой)
1. Напишите программу, которая выполняет следующие функции: • заполнение элементов массива вещественными числами с заданной ...

Сортировка выбором без запоминания минимума
на этом форуме есть процедура которая сортирует массив по возрастанию, а мне нужно, чтобы сортировали по убыванию, подскажите, что нужно...

9
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
05.10.2017, 03:21
может не запускаете?
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
05.10.2017, 03:45
Цитата Сообщение от Helsereet Посмотреть сообщение
Ничего не выводит, в чём ошибка ?
Python
1
2
3
4
5
6
def SelectionSort(arr):
    new_list = []
    for i in range(len(arr)):
        minimum = find_min(arr)
        new_list.append(arr.pop(minimum))
    return new_list
Вы удаляете элементы из arr во время итерации по нему же, так делать нельзя
0
964 / 719 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
05.10.2017, 08:05
Helsereet, а зачем так сложно?
Python
1
2
3
4
5
6
7
8
9
10
>>> l = [1,5,2,8,7,0,6]
>>> min(l)
0
>>> sorted(l)
[0, 1, 2, 5, 6, 7, 8]
>>> sorted(l)[::-1]
[8, 7, 6, 5, 2, 1, 0]
>>> l.index(min(l))
5
>>>
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
05.10.2017, 11:22
Цитата Сообщение от vic5710 Посмотреть сообщение
Helsereet, а зачем так сложно?
Где здесь сортировка выбором?
0
 Аватар для Semen-Semenich
5239 / 3483 / 1176
Регистрация: 21.03.2016
Сообщений: 8,314
05.10.2017, 13:37
Цитата Сообщение от oldnewyear Посмотреть сообщение
Вы удаляете элементы из arr во время итерации по нему же, так делать нельзя
может я ошибаюсь но мне кажется это тот случай когда это не вызовет ошибку. он хоть и удаляет элемент по индексу но индекс то всегда минимального элемента получает и даже после удаления элемента и смещения индексов новый индекс мин.эл. получается уже из измененного списка и поэтому выхода за пределы индексов не будет
Python
1
2
3
4
5
6
>>> def SelectionSort(arr):
    return [arr.pop(arr.index(min(arr))) for _ in range(len(arr))]
 
>>> arr = [1,7,8,0]
>>> print(SelectionSort(arr))
[0, 1, 7, 8]
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
05.10.2017, 14:48
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
может я ошибаюсь но мне кажется это тот случай когда это не вызовет ошибку. он хоть и удаляет элемент по индексу но индекс то всегда минимального элемента получает и даже после удаления элемента и смещения индексов новый индекс мин.эл. получается уже из измененного списка и поэтому выхода за пределы индексов не будет
Python
1
2
3
4
5
6
>>> def SelectionSort(arr):
    return [arr.pop(arr.index(min(arr))) for _ in range(len(arr))]
 
>>> arr = [1,7,8,0]
>>> print(SelectionSort(arr))
[0, 1, 7, 8]
В данном случае в функции find_min ошибка будет, когда ей будет передан пустой список
0
 Аватар для Semen-Semenich
5239 / 3483 / 1176
Регистрация: 21.03.2016
Сообщений: 8,314
05.10.2017, 15:38
Лучший ответ Сообщение было отмечено Helsereet как решение

Решение

с чего вы решили? функция find_min просто не вызовется так как for i in range(len(arr)) не будет выполняться (выполниться 0 раз) и функция SelectionSort вернет пустой new_list
Python
1
2
arr = []
print(SelectionSort(arr))
[]
0
2 / 2 / 2
Регистрация: 16.08.2017
Сообщений: 72
05.10.2017, 22:30  [ТС]
Да все будет работать и никакой ошибки не будет. IDE прост не так сработал тогда
0
440 / 432 / 159
Регистрация: 21.05.2016
Сообщений: 1,338
06.10.2017, 04:48
Цитата Сообщение от Semen-Semenich Посмотреть сообщение
с чего вы решили? функция find_min просто не вызовется так как for i in range(len(arr)) не будет выполняться (выполниться 0 раз) и функция SelectionSort вернет пустой new_list
Python
1
2
arr = []
print(SelectionSort(arr))
[]
Я говорил, если в find_min пустой список передать, то будет ошибка. А он туда передаётся рано или поздно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.10.2017, 04:48

Функция поиска минимума
Пожалуйста помогите с задачей: нужно написать функцию поиска минимума.

Функция поиска минимума
Задание: Написать функцию поиска минимума. P.S. надо чтобы числа вводились с клавиатуры( ну тип что бы человек сам вводил).

Функция поиска минимума в двумерном массиве
Сама функция из юнита double minimum(double **arr, int n) { double min = arr; for (int i = 0; i &lt; n; i++) { for (int j = 0; j...

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

Как работает функция поиска минимума fminbnd
Вот что нашёл в справке: &quot;fminbnd это файл функции. Алгоритм основан на поиске золотого сечения и параболической интерполяции.&quot; ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru