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

Отсортировать по возрастанию абсолютных величин элементы массива

23.12.2022, 20:54. Показов 1150. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите ,пожалуйста отсортировать по возрастанию абсолютных величин элементы массива, находящиеся между первым отрицательным и последним, абсолютное значение которого больше 100. Использовать алгоритм сортировки вставкой.
Массив действительных чисел А(N), значения элементов которого лежат в диапазоне [a,b].

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
from random import randint
def insertion_sort(first, last, items):
    if last - first < 1:
        return
    for i in range(first, last):
        a = items[i]
        pos = i
        while pos > first and abs(items[pos - 1]) > abs(a):
            items[pos] = items[pos - 1]
            pos -= 1
        items[pos] = a
n = int(input('Длина массива: '))
a, b = map(int, input('a и b через пробел: ').split())
arr = [randint(a, b) for _ in range(n)]
print(arr)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.12.2022, 20:54
Ответы с готовыми решениями:

Отсортировать по возрастанию абсолютных величин элементы массива
Помогите ,пожалуйста, написать программу без встроенных функций, простым языком Дан массив действительных чисел А(N), значения элементов...

Отсортировать по возрастанию абсолютных величин элементы массива
Помогите решить задачу, только без встроенных функций, максимально базовым языком Дан массив действительных чисел А(N), значения...

Отсортировать по убыванию абсолютных величин элементы массива
Дан массив действительных чисел А(N), значения элементов которого лежат в диапазоне . Отсортировать по убыванию абсолютных величин элементы...

3
2431 / 1474 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
23.12.2022, 21:37
Отсортировать по возрастанию абсолютных величин элементы массива

Там все, вроде, работает, ищет 2 отрицательных элемента "по краям" меньших -100, т.е. модуль которых больше 100. Если оба нашли, то сортируем кусок между ними, по возрастанию абсолютных величин.
0
0 / 0 / 0
Регистрация: 30.09.2020
Сообщений: 8
23.12.2022, 21:44  [ТС]
Эта программа выдает ошибку
0
2431 / 1474 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
23.12.2022, 22:33
При каких условиях? Напиши пример ввода.

Добавлено через 4 минуты
Условие в задаче:
1. Между первым отрицательным элементом и элементом, абсолютное значение которого больше 100
или
2. Между первым и последним отрицательным, абсолютное значение которого больше 100

Возможно я не так условие понял.
[2, -1, -101, 1, 2, 3, 4, 5, -101, 200]
Т.е. не между -101 и - 101, а между -1 и 200?

Добавлено через 1 минуту
Тогда, может так, если вариант 1.
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
from random import randint
 
 
def insertion_sort(first, last, items):
    if last - first < 1:
        return
    for i in range(first, last):
        a = items[i]
        pos = i
        while pos > first and abs(items[pos - 1]) > abs(a):
            items[pos] = items[pos - 1]
            pos -= 1
        items[pos] = a
 
 
n = int(input('Длина массива: '))
a, b = map(int, input('a и b через пробел: ').split())
arr = [randint(a, b) for _ in range(n)]
print(arr)
 
first = last = None
for i in range(n):
    if first is None and arr[i] < 0:
        first = i + 1
    if last is None and abs(arr[n - 1 - i]) > 100:
        last = n - 1 - i
    if first and last:
        break
 
insertion_sort(first, last, arr)
print(arr)
Добавлено через 31 секунду
И зачем лишний раз темы создавать, можно было в старой написать.

Добавлено через 1 минуту
Еще может быть ошибка, что индекс первого отрицательного больше, чем индекс второго элемента, тогда сортировать не будет. Это уже подгони под себя.

Добавлено через 27 минут
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
from random import randint
 
 
def insertion_sort(first, last, items):
    if last - first < 1:
        return
    for i in range(first, last):
        a = items[i]
        pos = i
        while pos > first and abs(items[pos - 1]) > abs(a):
            items[pos] = items[pos - 1]
            pos -= 1
        items[pos] = a
 
 
# n = int(input('Длина массива: '))
# a, b = map(int, input('a и b через пробел: ').split())
# arr = [randint(a, b) for _ in range(n)]
# print(arr)
 
n = 14
# arr = [1, 1, 1, -5, -100, 99, -66, 88, -77, 200, 1, 1, 100, -1]
arr = [1, 1, 1, 1111, 100, 99, 66, 88, 77, 20, -11, 1, 1, 1]
 
first = last = None
for i in range(n):
    if first is None and arr[i] < 0:
        first = i + 1
    if last is None and abs(arr[n - 1 - i]) > 100:
        last = n - 1 - i
    if first and last:
        break
 
if first > last:
    first, last = last + 1, first - 1
 
insertion_sort(first, last, arr)
print(arr)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.12.2022, 22:33
Помогаю со студенческими работами здесь

Отсортировать по неубыванию абсолютных величин элементы массива
Отсортировать по неубыванию абсолютных величин элементы массива находящиеся между последним, дробная часть которого больше 0.5 и первым,...

Отсортировать по убыванию абсолютных величин элементы массива, находящиеся между последним, равным 0 и первым, абсолютное значение которого меньше 100
Дан массив действительных чисел А(N), значения элементов которого лежат в диапазоне . Отсортировать по убыванию абсолютных величин элементы...

Все отрицательные элементы массива заменить удвоенными значениями их абсолютных величин
при вводе отрицательных элементов выводит ошибку &quot;Вызвано исключение по адресу 0x004D19F5 в Assembler4.exe: 0xC0000005: нарушение прав...

Отсортировать элементы строк массива по возрастанию значений, а затем отсортировать строки массива по возрастанию
Отсортировать элементы строк массива по возрастанию значений, а затем отсортировать строки массива по возрастанию среднего...

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru