В частности, в соответствии с табл. 2, объем производства стран - производителей автотранспортных средств, отмеченных в табл. 1, за 2016 год составляет 78537 тыс. ед, за 2017 год - 79860 тыс. ед. Анализируя эту таблицу, определяем, что удельный вес производства автомобилей Китая в 2016 и 2017 годах является наибольшим, составляя 35,8% и 36,34% соответственно, а Украины - наименьшим (0,006% и 0,013%).
За последние несколько лет мировой рынок автомобилей вырос примерно на треть. Согласно прогнозам мировых аналитиков, к 2030 году мировой автомобильный рынок может вырасти на 40-45% по сравнению с 2015 годом, достигнув 125-130 млн. единиц. При этом примерно 75% будет приходиться на легковые автомобили, а 25% - на коммерческие.
Список использованной литературы: 1.Официальный сайт Международной организации предприятий автомобильной промышленности (International Organization of Motor Vehicle Manufactures - ЮMVM).[Электронный ресурс] / Международная организация предприятий автомобильной промышленности - Режим доступа: https://knoema.com/atlas/sources/OICA
2. Пасько А.В. Особенности влияния глобализации на развитие мировой автомобильной промышленности. - Вестник Университета. 2014. - № 15, 2014. - с. 59-62.
3. Производство основных видов транспортных средств и оборудования. 15.39. / Российский статистический ежегодник. 2017: стат.сб. / Росстат. М., 2017.
© Лелет Д.В., 2023
УДК 004.021
Невский А.А.
Ведущий инженер-программист, AWS Certified Architect Бакалавр, Белорусский государственный университет информатики и радиоэлектроники
Республика Беларусь, г. Минск
ЭФФЕКТИВНОЕ РЕШЕНИЕ АЛГОРИТМИЧЕСКИХ ПРОБЛЕМ С ИСПОЛЬЗОВАНИЕМ СТРУКТУРЫ ДАННЫХ МАССИВ И МЕТОДА ДВУХ УКАЗАТЕЛЕЙ
Аннотация
В данной статье описан метод решения алгоритмических задач на основе двух указателей и структуры данных массив. Предложен и описан алгоритм эффективного использования данной техники, реализованный на высокоуровневом объектно-ориентированном языке программирования Java. Применение данной техники к решению алгоритмических задач призвано значительно ускорить обработку данных, сократить количество необходимых вычислительных мощностей и эффективно использовать оперативную память компьютера.
Ключевые слова
Метод двух указателей; алгоритм; структура данных; массив; язык программирования Java; обработка
данных; эффективные вычисления.
Neuski A.
Lead Software Engineer, AWS Certified Architect Bachelor's degree, Belarusian State University of Informatics and Radioelectronics
Republic of Belarus, Minsk
EFFECTIVE SOLUTION OF ALGORITHMIC PROBLEMS USING ARRAY DATA STRUCTURE
AND TWO POINTERS METHOD
Abstract
This article describes a method for solving algorithmic problems based on two pointers and an array data structure. An algorithm for the effective use of this technique, implemented in the high-level object-oriented programming language Java, is proposed and described. The application of this technique to solving algorithmic problems is designed to significantly speed up data processing, reduce the amount of required computing power and effectively use the computer's RAM.
Keywords
Two pointer method; algorithm; data structure; array; Java programming language; data processing; efficient computing.
Актуальность проблемы.
Эффективные компьютерные вычисления - одна из острейших проблем сегодняшнего дня, решение которой позволяет экономить денежные средства, достигать конечного результата, заботиться о природе, потреблять меньшее количество природных ресурсов, совершать сегодня то, что было бы невозможно решить в обозримом будущем без эффективного применения алгоритмов.
Одной из популярных групп алгоритмов являются алгоритмы, применяемые для вычислений на такой структуре данных как массив. С точки зрения алгоритмических задач одномерные массивы (Idarray) очень похожи и на строки: они оба представляют собой упорядоченную группу элементов. Большинство алгоритмических задач включают в себя либо массив, либо строку как часть входных данных. Именно поэтому так важно эффективно работать с массивами используя самые подходящие техники решения задач. Одной из таких техник является метод двух указателей.
Описание предложенного решения.
Два указателя — чрезвычайно распространенный метод, используемый для решения проблем с массивами и строками. Он предполагает наличие двух целочисленных переменных, которые перемещаются по итерации.
Существует несколько способов реализации двух указателей. Для начала давайте рассмотрим следующий метод:
1) установите один указатель на начало массива, а другой на его конец;
2) двигайте их навстречу друг другу, пока они не встретятся.
1 function twoPointers(arr):
2 var left = 0
3 4 var right = arr.length - 1
5 while left < right:
6 do some logic here depending on the problem
7 do some more logic here to decide on one of the following:
8 1. left++
9 2. right—
10 3. both left++ and right—
Рисунок 1 - Псевдокод первого способа реализации алгоритма
Особенность этой техники в том, что у нас никогда не будет больше, чем O(n) итераций для цикла while, поскольку указатели начинаются на n шагов друг от друга и приближаются хотя бы на один шаг на каждой итерации. Следовательно, если мы сможем сохранить работу внутри каждой итерации на уровне
0(1), этот метод приведет к линейному времени выполнения, которое обычно является наилучшим возможным временем выполнения.
Пример 1. Дана строка s, верните true, если это палиндром, или же false в противном случае. Строка является палиндромом, если она читается как вперед, так и назад одинаково. Это означает, что после переворачивания это все еще та же строка. Например: «abcdcba».
1 public boolean ifPalindrome(St ring s) {
2 int left = 0;
3 int right = s.lengthU - 1;
4
5 while (left < right) -f
6 if (s.charAt(left) != s.charAt(right)} i
7 return false;
8 >
9
10 left++;
11 right—;
12 >
13
14 return true;
15 >
Рисунок 2 - Реализация алгоритма с использованием метода двух указателей
Этот метод, в котором мы устанавливаем указатели на первый и последний индекс и перемещаем их друг к другу, является лишь одним из способов реализации двух указателей. Другой метод подойдет когда на вход подаются два массива. В этом случае необходимо двигаться по каждому из двух массивов одновременно пока все элементы не будут проверены.
1 function twopointers2(arrl, arr2):
2 i = j = 0
3 while i < arrl.length AND j < arr2.length:
4 Do some logic here depending on the problem
5 Do some more logic here to decide on one of the following
6 1. i++
7 2. j++
8 Q 3. Both i++ and j++
У 10 while i < arrl.length:
11 Do some logic
12 i++
13
14 while j < arr2.length:
15 Do some logic
16 j++
Рисунок 3 - Псевдокод второго способа реализации алгоритма
Легко увидеть, что с помощью языка Java и правильного использования подходящий структур данных, можно достичь компактного исходного кода и высокопроизводительного алгоритма, способного решить поставленную перед нами задачу.
Вывод.
Представленный алгоритм с использованием метода двух указателей на Java компактен, интуитивен, прост для понимания и использует внутри себя высокоэффективный метод итерации. Используя данный алгоритм для массива или строк, можно легко улучшить производительность
компьютерных вычислений, сократить время исполнения, потребление памяти и повысить эффективность разрабатываемого приложения, что является одним из важнейших факторов правильно спроектированной программы.
Список использованной литературы:
1. Бенджамин Дж. Эванс, Джеймс Гоф, Крис Ньюленд. Java: оптимизация программ. Практические методы повышения производительности приложений в JVM. — М.: Диалектика, 2019. — 448 с.
2. Джошуа Блох. Java. Эффективное программирование. — 3-е. — М.: Диалектика, 2019. — 464 с.
3. Роберт Седжвик, Кевин Уэйн. Алгоритмы на Java. — 4-е изд. — М.: Вильямс, 2013. — 848 с.
4. Кей С. Хорстманн. Java. Библиотека профессионала, том 1. Основы. 10-е издание. — М.: Вильямс, 2017. — 864 с.
© Невский А.А., 2023
УДК 62
Нурмырадов М.,
Преподаватель,
Международный университет нефти и газа имени Ягшыгелди Какаева,
Ашхабад, Туркменистан Нежиметдинова О., Студент,
Международный университет нефти и газа имени Ягшыгелди Какаева,
Ашхабад, Туркменистан Атдаев М., Студент,
Международный университет нефти и газа имени Ягшыгелди Какаева,
Ашхабад, Туркменистан Йаныбаев М., Студент,
Международный университет нефти и газа имени Ягшыгелди Какаева,
Ашхабад, Туркменистан Научный руководитель: Турмаев Х.,
Старший преподаватель, Международный университет нефти и газа имени Ягшыгелди Какаева,
Ашхабад, Туркменистан
ПЛАНИРОВКА ГОРИЗОНТАЛЬНО ОРИЕНТИРОВАННОЙ ПРОМПЛОЩАДКИ
Аннотация
Планируемая поверхность площадки в подавляющем большинстве имеет форму плоскости: горизонтальную, а иногда наклонную.
Ключевые слова
Планируемая поверхность, вынос в натуру, объема земляных работ, исполнительная съемка,
высотные отметки, геодезическая съемка.