Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 12, 2019 15:36:48

liq273
Зарегистрирован: 2019-12-12
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Задача с сортировкой в массиве.

Здравствуйте.
Помогите, пожалуйста, советом\подсказкой решить задание самостоятельно.

Задание:
Сгенерировать двумерный целочисленный массив a размерностью m x n из случайных чисел в диапазоне от -x до +y , предусмотрев возможность ручного ввода элементов массива.
Используя два типа сортировки (пузырьковая, шелла), отсортировать элементы массива a по строкам начиная с элемента a и заканчивая элементом a, k>=c (l<=d). Остальные элементы массива не сортировать и оставить на первоначальных местах. Дополнительный массив не заводить.
Отсортированный массив записать в файл.

У меня получилось сделать:

# Просим пользователя определить масив
m = input(“Введите значение m (количество строк): ”)
n = input(“Введите значение n (количество столбцов): ”)
x = input(“Введите значение x: ”)
y = input(“Введите значение y: ”)

# Проверяем значение x, если оно не отрицательное то делаем его отрицательным
if int(x) > 0:
x_1 = int(x) * -1
else:
x_1 = int(x)

# Создаем массив a
import numpy as np
a = np.random.randint(x_1, int(y), size = (int(m), int(n)))

print(“На основании введенных Вами данных сформирован массив ‘a’:”)
print(a)

#Просим пользователя определить какие данные будут выбраны ил массива a для сортировки
k = input(“Введите значение k: ”)
c = input(“Введите значение c: ”)
l = input(“Введите значение l: ”)
d = input(“Введите значение d: ”)

k_c = np.arange(int(k), int©)
l_d = np.arange(int(l), int(d))

#Функция для выбора данных из массива a
def f():
return a

Этим получилось решить пункты:
1. Сгенерировать двумерный целочисленный массив a размерностью m x n из случайных чисел в диапазоне от -x до +y.
2. предусмотрев возможность ручного ввода элементов массива.
3. определить функцию с элемента a и заканчивая элементом a, k>=c (l<=d) для последующей сортировки.

Не понимаю как отсортировать данные с элемента a и заканчивая элементом a, k>=c (l<=d) и поместить их обратно в массив a.
Супер если подскажите что именно использовать и что не так с моим кодом.
Python 3.7, NumPy 1.17.4, Windows 10, PyCharm 2019.3 (Edu).

Спасибо!

Офлайн

#2 Дек. 12, 2019 16:49:02

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Задача с сортировкой в массиве.

liq273
Не понимаю как отсортировать данные с элемента a и заканчивая элементом a, k>=c (l<=d) и поместить их обратно в массив a.
Супер если подскажите что именно использовать и что не так с моим кодом.
сделайте обёртку над двумерным массивом, который работает с ним как будто это одномерный массив.
То есть, предположим у нас есть массив
 [[0, 3, 6, 7],
 [90, -1, 4, 7],
 [5, 0, 0, 1]
]
вы можете индексировать его как обычно
 l[1][2] == 4
но через класс-обертку вы можете индексировать его как вектор
 wrapper(l)[6] == 4 == l[1][2]
а дальше тривиально, сортируете срез массива в нужных границах.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version