ivanu6ka85
Дек. 10, 2021 14:25:48
всем доброго времени суток!
вот такая задача:
Написать программу:на вход подается последовательность чисел через пробел, а также запрашивается у пользователя любое число.
Далее программа работает по следующему алгоритму:
Преобразование введённой последовательности в список
Сортировка списка по возрастанию элементов в нем (для реализации сортировки определите функцию)
Устанавливается номер позиции элемента, который меньше введенного пользователем числа, а следующий за ним больше или равен этому числу.
ПОЛУЧИЛОСЬ: ввод чисел осуществляется, ввод от пользователя также осуществляется. Далее преобразую полученные числа в список с добавлением числа от пользователя, далее сортирую этот список по возрастанию.
ЧТО НЕ ПОЛУЧИЛОСЬ: при поиске индекса введенного и добавленного в список элемента, выдаёт индекс последнего числа(как будто при добавлении в список), но список уже отсортирован и индекс не верный.
А по заданию задачи нужно найти соседние индексы относительно введенного числа и добавленного в список.
вот код:
def binary_search(num, element, left, right):
if left > right: # если левая граница превысила правую,
return False
middle = (right + left) // 2 # находим середину
if num == element: # если элемент в середине,
return middle # возвращаем этот индекс
elif element < num: # если элемент меньше элемента в середине
# рекурсивно ищем в левой половине
return binary_search(num, element, left, middle - 1)
else: # иначе в правой
return binary_search(num, element, middle + 1, right)
num = list(map(int, input(“Введите целые числа через пробел:”).split()))
element = int(input(“Введите любое целое число : ”))
num.append(element)
print(sorted(num))
index = num.index(element)
#element_index = binary_search(num, element, 0, len(num))
print('Индекс введенного элемента:', element, ‘в списке равен:’, index)
#print(element_index)
py.user.next
Дек. 11, 2021 03:07:07
Не надо добавлять число в список, а надо просто найти в списке позиции, где стоят два элемента и первый элемент меньше введённого числа, а второй элемент больше или равен введённому числу. Если такой позиции нет, вернуть -1 или 0 в зависимости от того, с какого числа начинается отсчёт позиций. Слово “номер”, которое есть в задании, обычно говорит о натуральных числах, а они в нашей математике начинаются с единицы, так как использовались для нумерации предметов, которые существуют. В международной математике ноль включают в натуральные числа, поэтому там всегда идёт оговорка, входит ноль или не входит. Следовательно, раз нуля в номерах не бывает, то его можно использовать в качестве понятия “номер позиции не найден, так как такой позиции в списке нет”.
Когда такой позиции нет? Когда ты ввёл одни единицы, а число ввёл миллион. И когда ты ввёл одни пятёрки, а число ввёл единицу.
Ещё есть случай, когда таких позиций несколько и с этим нужно что-то делать. Но обычно берётся самая первая слева направо.
ivanu6ka85
Дек. 13, 2021 10:32:55
py.user.next
Не надо добавлять число в список, а надо просто найти в списке позиции, где стоят два элемента и первый элемент меньше введённого числа, а второй элемент больше или равен введённому числу. Если такой позиции нет, вернуть -1 или 0 в зависимости от того, с какого числа начинается отсчёт позиций. Слово “номер”, которое есть в задании, обычно говорит о натуральных числах, а они в нашей математике начинаются с единицы, так как использовались для нумерации предметов, которые существуют. В международной математике ноль включают в натуральные числа, поэтому там всегда идёт оговорка, входит ноль или не входит. Следовательно, раз нуля в номерах не бывает, то его можно использовать в качестве понятия “номер позиции не найден, так как такой позиции в списке нет”.Когда такой позиции нет? Когда ты ввёл одни единицы, а число ввёл миллион. И когда ты ввёл одни пятёрки, а число ввёл единицу.Ещё есть случай, когда таких позиций несколько и с этим нужно что-то делать. Но обычно берётся самая первая слева направо.
Подскажите как это кодом записать, никак не пойму, с помощью цикла?