Задание 12 Параграф 1.5 ГДЗ Босова 9 класс Углубленный уровень (Информатика)
Рассмотрим вариант решения задания из учебника
Босова, Аквилянов 9 класс, Просвещение:
Дан двумерный массив A размером 200×2, составленный из координат двухсот точек плоскости. Придумайте алгоритм и напишите программу, которая расположит эти точки (координаты точек) в порядке удалённости от начала координат.
Для решения задачи удобно создать одномерный массив, куда для каждой точки занести ее расстояние от начала координат. Затем сделать сортировку этого массива по возрастанию, одновременно меняем местами соответствующие строки в массиве A, чтобы точки "двигались" вместе со своими расстояниями. Сортировку можно сделать любым из известный способом (пузырьком, выбором, двоичный поиск)
Массив А можно создать через randint. Расстояние точки от начала координат равно корню квадратному из суммы квадратов ее координат. Можно не использовать корень квадратный, а просто сравнивать суммы квадратов координат, которые заносятся в одномерный массив D. В программе вывод сделан на первые 10 точек отсортированного массива. Если надо больше, измените 10 в последнем цикле.
Расстояние при выводе вычисляется dist = (A[i][0]**2 + A[i][1]**2)**0.5, что равносильно dist = sqrt((A[i][0]**2 + A[i][1]**2)) без присоединения модуля math
Программа:
from random import randint
N = 200
A = [[randint(-100, 100), randint(-100, 100)] for i in range(N)]
# Создаем одномерный массив расстояний от начала координат для сравнения достаточно x² + y²
D = [A[i][0]**2 + A[i][1]**2 for i in range(N)]
# Сортировка выбором массива D с одновременной перестановкой точек в A
for i in range(N - 1):
# Находим индекс минимального элемента в неотсортированной части
min_idx = i
for j in range(i + 1, N):
if D[j] < D[min_idx]:
min_idx = j
# Меняем местами расстояния
D[i], D[min_idx] = D[min_idx], D[i]
# Одновременно меняем местами соответствующие точки
A[i], A[min_idx] = A[min_idx], A[i]
print(‘Точки в порядке удалённости от начала координат: ’)
print(" № X Y Расстояние")
for i in range(min(10, N)):
dist = (A[i][0]**2 + A[i][1]**2)**0.5
print(f’{i+1:2} {A[i][0]:4} {A[i][1]:4} {dist:7.2f}’)
Окно вывода:
Точки в порядке удалённости от начала координат:
№ X Y Расстояние
1 0 -2 2.00
2 4 5 6.40
3 -2 8 8.25
4 8 -2 8.25
5 11 2 11.18
6 -9 -7 11.40
7 -1 12 12.04
8 18 1 18.03
9 -2 20 20.10
10 -16 -16 22.63