Военная лексика как особый элемент лексической системы языка Текст научной статьи по специальности «Языкознание и литературоведение»
военная лексика / военная терминология / военная терминосистема / военный термин / военная терминосфера / military vocabulary / military terminology / military terms system / military term / military terms sphere
Аннотация научной статьи по языкознанию и литературоведению, автор научной работы — Бидеркесен Дурду
Статья посвящена одному из актуальных вопросов современного мира исследованию военной лексики, часто используемой в средствах массовой информации, благодаря стремительному научно-техническому прогрессу, передовым технологиям в области вооружения, а также частым военным конфликтам. В связи с определением понятия « военная терминосистема » обсуждается проблема определения его ключевого понятия «терминосистема», одним из главных условий существования которой является системность элементов. Автор также рассматривает условия, обеспечивающие системность терминологии, условия для формирования терминосистем, а также ее основные признаки. В статье проводится анализ существующих определений понятия « военная лексика », делается вывод, что основу военной лексики составляют именно терминологические единицы, а также рассматриваются различные классификации военной лексики , основанные на выделении тех или иных значимых аспектов военной отрасли. Кроме того, в статье освещаются такие понятия, как « военная терминология », « военная терминосистема », « военный термин » и « военная терминосфера ». Помимо определений рассматриваемых понятий автор акцентирует внимание на характеристиках этих терминов, а также на их отличительных чертах. В статье делается вывод, что военную лексику можно считать политическими маркерами современности.
i Надоели баннеры? Вы всегда можете отключить рекламу.
Похожие темы научных работ по языкознанию и литературоведению , автор научной работы — Бидеркесен Дурду
Подходы к пониманию терминологии. Проблема термина при переводе военно-политических материалов с китайского языка на русский (на примере текста доклада Ху Цзиньтао на XVIII съезде ЦК КПК)
Функции и признаки термина как основа дифференциации термина/нетермина в современном русском языке
Термин как объект исследования в лингвистике
Специфика отбора профессиональной военной лексики для обучения французскому языку курсантов командных вузов
К вопросу о категоризации терминологии чрезвычайных ситуаций (на материале английской терминологии)
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.
MILITARY VOCABULARY AS A SPECIAL ELEMENT OF LEXICAL SYSTEM OF THE LANGUAGE
This article is dedicated to one of the most pressing topics in the modern world military vocabulary , often used in the media, thanks to the rapid scientific and technological progress, advanced weapons technologies, as well as frequent military conflicts. In connection with the definition of the concept “military terminological system”, the issue of defining the key concept “terminological system” is discussed, one of the main conditions for the existence of which is the systematic nature of the elements. The author also considers the conditions that ensure the consistency of terminology, the conditions for the formation of terminological systems, as well as its main features.The article analyses the existing definitions of the concept “ military vocabulary ”, concludes that it is precisely the terminological units that form the basis of military vocabulary , and various classifications of military vocabulary based on identifying certain significant aspects of the military branch are considered. In addition, the article highlights such concepts as “ military terminology ”, “ military terms system ”, “ military term ” and “ military terms sphere ”. Besides to the definitions of the concepts under consideration, the author focuses on the characteristics of these terms, as well as on their distinctive features. The article concludes that military vocabulary can be considered political markers of the present time.
Текст научной работы на тему «Военная лексика как особый элемент лексической системы языка»
ЛИНГВИСТИКА И МЕЖКУЛЬТУРНАЯ КОММУНИКАЦИЯ
УДК 81’1 йо1:10.26907/2658-3321.2020.3.1.5-16
ВОЕННАЯ ЛЕКСИКА КАК ОСОБЫЙ ЭЛЕМЕНТ ЛЕКСИЧЕСКОЙ СИСТЕМЫ ЯЗЫКА
Казанский федеральный университет, г. Казань, Россия
Аннотация. Статья посвящена одному из актуальных вопросов современного мира -исследованию военной лексики, часто используемой в средствах массовой информации, благодаря стремительному научно-техническому прогрессу, передовым технологиям в области вооружения, а также частым военным конфликтам. В связи с определением понятия «военная терминосистема» обсуждается проблема определения его ключевого понятия «терминосистема», одним из главных условий существования которой является системность элементов. Автор также рассматривает условия, обеспечивающие системность терминологии, условия для формирования терминосистем, а также ее основные признаки. В статье проводится анализ существующих определений понятия «военная лексика», делается вывод, что основу военной лексики составляют именно терминологические единицы, а также рассматриваются различные классификации военной лексики, основанные на выделении тех или иных значимых аспектов военной отрасли. Кроме того, в статье освещаются такие понятия, как «военная терминология», «военная терминосистема», «военный термин» и «военная терминосфера». Помимо определений рассматриваемых понятий автор акцентирует внимание на характеристиках этих терминов, а также на их отличительных чертах. В статье делается вывод, что военную лексику можно считать политическими маркерами современности.
Ключевые слова: военная лексика, военная терминология, военная терминосистема, военный термин, военная терминосфера.
Для цитирования: Бидеркесен Д. Военная лексика как особый элемент лексической системы языка. Казанский лингвистический журнал. 2020; 1 (3): 5-16. Б01: 10.26907/26583321.2020.3.1.5-16.
MILITARY VOCABULARY AS A SPECIAL ELEMENT OF LEXICAL SYSTEM OF THE LANGUAGE
Kazan Federal University, Kazan, Russia
Abstract. This article is dedicated to one of the most pressing topics in the modern world -military vocabulary, often used in the media, thanks to the rapid scientific and technological progress, advanced weapons technologies, as well as frequent military conflicts. In connection with the definition of the concept «military terminological system», the issue of defining the key concept «terminological system» is discussed, one of the main conditions for the existence of which is the systematic nature of the elements. The author also considers the conditions that ensure the consistency of terminology, the conditions for the formation of terminological systems, as well as its main features.The article analyses the existing definitions of the concept «military vocabulary», concludes that it is precisely the terminological units that form the basis of military vocabulary, and various classifications of military vocabulary based on identifying certain significant aspects of the military branch are considered. In addition, the article highlights such concepts as «military terminology», «military terms system», «military term» and «military terms sphere». Besides to the definitions of the concepts under consideration, the author focuses on the characteristics of these terms, as well as on their distinctive features. The article concludes that military vocabulary can be considered political markers of the present time.
Keywords: military vocabulary, military terminology, military terms system, military term, military terms sphere.
For citation: Biderkesen D. Military vocabulary as a special element of lexical system of the language. Kazan linguistic journal. 2020; 1 (3): 5-16. (In Russ.) DOI: 10.26907/2658-3321.2020.3.1.5-16.
«Выход» военных терминов и обозначений за рамки сферы их изначального применения и их проникновение в повседневную речь простых обывателей говорит не только об обострении обстановки на мировой политической арене, явных и скрытых конфликтах между государствами и готовности мирового общества к внезапным боевым действиям, но и о формировании пласта лексики, который не только включает в себя уже существующие слова, но и стремительно пополняется новыми единицами благодаря социально-политическим факторам и научно-техническому прогрессу. Во многом на такое распространение лексических единиц военного дела повлияли средства массовой информации (СМИ),
широко освещающие происходящие в мире события. В связи с этим возникает необходимость многоаспектного исследования военных терминологических единиц в силу их двойственной природы, т.е. их принадлежности одновременно и к общенародному слою словарного состава языка, и к лексике ограниченного профессионального применения, что обусловливает актуальность данного исследования.
В качестве методов исследования будут применены следующие общенаучные методы: индуктивный и дедуктивный методы, методы анализа и синтеза, из собственно лингвистических методов, используемых в работе, можно выделить метод дефиниционного анализа (анализ дефиниций «термин», «военная лексика» и др.), а также описательный метод и метод классификации, предполагающие обобщение и систематизацию анализируемого материала.
Термины представляют собой сложное и многоаспектное явление. В настоящее время существует множество определений термина, который является неотъемлемой частью любой области научного знания. Многие исследователи этого явления пытались прийти к единому мнению в вопросе определения понятия «термин», однако сформулировать единое определение так и не получилось.
Остановимся подробнее на понятии «термин» и приведем наиболее распространенные его определения. Изучению термина посвящали свои труды многие исследователи, например, А.Н. Баранов, В.В. Виноградов, Г.О. Винокур, М.М. Глушко, Б.Н. Головин, В.А. Звягинцев, Л.А. Капанадзе, В.И. Лейчик, А.А. Реформатский, А.В. Суперанская и др. Д.Н. Ушаков под термином предлагает определять термин как «понятие, выраженное словом; слово, являющееся названием строго определенного понятия; специальное слово и выражение, принятое для обозначения чего-нибудь в той или иной сфере, профессии» [12, С. 810].У М. М. Глушко находим, что термин — это «слово или словосочетание, которое, благодаря наличию у него строгой и точной дефиниции, обладает четкими семантическими границами и поэтому является однозначным в рамках определенной классификационной системы»
[4, С. 33]. С.В. Гринев понимает под термином «номинативную специальную лексическую единицу (слово или словосочетание) специального языка, применяемую для точного наименования специальных понятий» [3, С. 22].
Представленные определения термина — это лишь малая часть всех существующих трактовок исследуемого явления, природа которого поражает своей глубиной и сложностью. В связи с вышеизложенным, можно сделать вывод, что термин — это слово (или словосочетание), на которое возложена задача предельно точной, логичной и, по возможности, однозначной дефиниции предметов, понятий, явлений, отображающих окружающую действительность. Следует также отметить, что термины не могут существовать сами по себе. Их сущность и функции раскрываются в условиях определенного контекста, теории, в рамках той или иной области знаний.
Стремительное развитие науки и техники повлекло за собой появление большого количества слов и устойчивых словосочетаний, дающих точные названия и обозначения специальных понятий и явлений, т.е. терминов. Благодаря своей численности и значимости термины прочно вошли в лексический состав каждого языка, образовав собой отдельный пласт, в состав которого входят: общенаучные термины (в целом принадлежат к сфере науки, например: «масса», «мощность» и т.п.) и специальные термины (функционирующие в определенных научных областях, например: «двигатель», «реактор» и т.п.).
Исследованием специальной лексики занимались многие известные ученые-лингвисты, такие, как В.В. Виноградов, Г.О. Винокур, А.С. Герд, В.П. Даниленко, В.А. Звягинцев, О.Н. Лапшина, В.М. Лейчик, Е.С. Никитина, М.М. Покровский, А.А. Реформатский, А.Я. Шайкевич и др. Военная лексика также привлекла внимание языковедов: ей посвятили свои работы следующие современные исследователи: А.К. Абдульманова, А.С. Будилович, Д.А. Гарибян, В.В. Ильенко, Л.Л. Кутина, С.Д. Ледяева, В.И. Максимов, Р.И. Сидоренко, Ф.П. Сороколетов, И.С. Хаустова и многих других. Особенности функционирования современной военной лексики и терминологии представлены в работах Ю.А. Бельчикова, Е.В. Брысиной, Н.В. Егоршиной, Т.Н. Зайцевой, Н.М. Орловой и др.
В фокусе нашего научного исследования находится специальная лексика, функционирующая в военной сфере жизни российского общества. Военная лексика — это «система лексических средств, отражающих разнообразные военные понятия и употребляющихся в общенародном и специальном общении» [10, С. 4]. Следует отметить, что в понятие «военная лексика» входят также и такие понятия, как «военная терминология», «военная терминосистема». Так, В.Н. Шевчук трактует военную терминологию следующим образом: «это упорядоченная совокупность военных терминов языка, которые отражают понятийный аппарат военной науки и связаны с формами и способами ведения войны, с вопросами стратегического использования вооруженных сил, а также оперативно-тактического применения объединений, соединений, частей и подразделений, с их организацией, вооружением и техническим оснащением» [13, С. 97].
В Военной энциклопедии предлагается следующее трактование рассматриваемого понятия: «Военная терминология — формализованная система установленных военных терминов (слов, словосочетаний и т.п.), каждый из которых имеет строго определенное значение с четко очерченными рамками применения и научным обоснованием» [2, С. 62-63].
Что касается понятия «военная терминосистема», то с его трактовкой сопряжены некоторые трудности, основной из которых можно назвать именно определение самого понятия «терминосистема» (или терминологическая система). Следует отметить, что еще 80-е годы XX века проблема системности и структурности терминологии неоднократно становилась предметом оживленных споров и обсуждений, однако до настоящего времени этот вопрос так и не нашел своего окончательного решения. Тем не менее, под терминосистемой принято понимать «упорядоченное состояние терминов» [1, С. 6].
Итак, системность можно назвать одним из важнейших условий существования терминов, которые являются лишь составными элементами терминосистемы, а терминосистема, в свою очередь, должна являть собой некоторую организованную совокупность терминов, адекватно выражающих систему понятий теорий.
Д.С. Лотте предложил условия, обеспечивающие системность терминологии:
— система терминов должна базироваться на классификации понятий;
— признаки и понятия термина должны рассматриваться, исходя из классификационных систем;
— лексические единицы должны отображать общность рассматриваемого понятия с другими терминами и в то же время, его специфичность [8].
В.М. Лейчик, как и Д.С. Лотте, занимался исследованием терминов и образующихся с их помощью систем. Под терминосистемой ученый понимал языковую модель, т.е. совокупность понятий как логическую модель области знаний. Так, В.М. Лейчиком было выделено четыре условия для формирования терминосистемы:
— четкая область знаний;
— относящаяся к этой области знаний понятийная система;
— наличие определенной теории, описывающей область, в состав которой входит данная система понятий;
— наличие сложившегося языка для специальных целей, наименования которого способны обозначать понятия данной области и системы [7, С. 256].
Терминосистема призвана обеспечить системный характер существования и функционирования терминологии, в рамках которой будет осуществляться взаимообусловленность одних терминов с другими. В терминосистеме у каждого термина есть свое место, а также свое значение, которое отличается от значений других элементов этой системы.
Так, военная терминосистема, по мнению В.П. Коровушкина, — это «вся совокупность военных терминов, имеющихся в лексической системе литературного языка, как основной автономной формы существования национального языка» [6, С. 133].
Таким образом, анализируя вышеприведенные дефиниции, можно заключить, что военная терминология, реализуемая посредством лексических единиц, именующих понятия и явления сферы военного дела, в своей совокупности являет собой динамически развивающуюся систему -терминосистему, отличающуюся логичностью, структурированностью
и принадлежностью к системе знаний о подготовке и ведении военных действий. В свою очередь военная терминология и военная терминосистема -элементы более широкого понятия «военная лексика», поскольку не всегда слова, относящиеся к военной сфере, могут соответствовать определению «термин» (например, оценочные, уменьшительные, составные, стилистически маркированные и т.п. номинации), однако они относятся к военной лексике. Тем не менее, основу военной лексики все же составляют именно терминологические единицы, т.е. термины.
В силу того, что сфера военной деятельности очень обширная и подразделяется на различные самостоятельные области знания, существует множество терминов тактических, организационных, военно-технических, терминов, относящихся к различным родам войск и видам вооруженных сил и т.п. Для каждой из перечисленных областей, характерна своя терминология. В связи с этим, Ю.Н. Сдобнова предлагает следующую классификацию военной терминологии, которую она подразделяет на отраслевые группы и именует «терминосферами»: «терминосфера родов войск и видов Вооруженных сил; терминосфера военной техники; организационная терминосфера; общетактическая терминосфера; штабная терминосфера; военно-политическая терминосфера; командно-строевая терминосфера; военно-топографическая терминосфера» [11, С. 199].
В свою очередь Е.Д. Исаева предлагает подразделять военную терминологию по тематически-отраслевому признаку на следующие группы: «военные команды (например, «Смирно! Встать!»; военно-технические термины (например, «радиолокационный дальномер»; оперативно-тактические термины (например, «расположение войск», «боевой порядок»); военно-административные термины (например, «дивизионный округ»); военно-топографические термины (например, «разведка местности», «рекогносцировка»); военно-инженерные термины (например, «понтонно-переправочные средства»)» [5, С. 31].
Ю.О. Лукьянчук предлагает свою классификацию терминов военной сферы, которая основывается на разновидности вооруженных сил. Данная классификация включает:
— термины сухопутных войск (включают термины механизированных, танковых, аэромобильных и др. войск) — «полевая артиллерия»;
— термины военно-морских сил (включают термины надводных, подводных сил, морской пехоты и т.д.) — «десантный корабль»;
— термины военно-воздушных сил (включают термины истребительной, разведывательной, бомбардировочной, военно-транспортной авиации) — «бомбардировщик»;
— термины военной связи — «своевременность установления связи», «узел связи»;
— термины инженерных войск — «инженерное обеспечение боевых действий» [9, С.66].
Более широкую классификацию военной лексики приводит В.П. Коровушкин, который делит лексические единицы военной сферы на: «военное арго; военный жаргон; военные коллоквиализмы; военные вульгаризмы; элементы смежных профессиональных и корпоративных жаргонов [6, С. 134].
Проведя анализ представленных выше классификаций, можем отметить, что все они (кроме классификации В.П. Коровушкина) практически идентичны, поскольку рассматривают и классифицируют исключительно военные термины, принадлежащие к формальной стороне сферы военного дела. Однако военная область не ограничивается лишь формальными дефинициями понятий, объектов и предметов военного дела. Военная лексика включает в себя жаргонизмы, сленг военных: разговорную и просторечную лексику. К этой группе относятся неоднородные по своей функциональной характеристике лексические единицы, эмоционально окрашенные элементы военной лексики, зачастую выступающие стилистическими синонимами военных терминов. Таким образом, подобная лексика характеризует сферу неофициального
профессионального общения, «стирая границы» между военной и общеязыковой разговорной лексикой.
В рамках настоящего исследования, посвященного рассмотрению таких понятий, как «термин», «военная лексика», «военная терминология», «военная терминосистема», «военная терминосфера», а также выполняемых ими функций, было определено, что под термином (хотя и существует множество трактовок этого понятия), принято понимать единицу языка (слово или словосочетание), служащее для обозначения того или иного понятия или явления, признака или характеристики объектов или предметов окружающей нас действительности, научно зафиксированных и описанных.
Под понятиями «военная терминология» и «военная терминосистема», и «военная терминосфера» в целом подразумевается совокупность терминов, организованная, классифицированная и систематизированная тем или иным способом для наиболее правильного применения терминологических единиц и избегания путаницы между понятиями.
Таким образом, можно отметить большой интерес ученых-лингвистов в исследовании лексики сферы военного дела. Этот интерес можно объяснить тем, что не только среди военных, но и в повседневной речи простых людей все больше и больше стало появляться слов военной тематики. Широкое употребление слов военного характера обусловлено частыми военными конфликтами в разных странах, разработкой новых военных технологий, техники и боевого оружия. Вовлечение широких масс людей в военные действия, а также широкое освещение всех этих событий с помощью средств массовой информации сделало тему войны с ее терминами и понятиями близкой и понятной невоенному человеку, таким образом, военные термины можно определить как политические маркеры современности.
В связи с этим сбор и изучение военной лексики представляет большой интерес как в рамках истории, так и в рамках языкознания. Кроме того, результаты данного исследования имеют явную практическую значимость — они будут востребованы и процессе обучения русскому языку как иностранному,
так как в современной практике преподавания русского языка как иностранного наиболее перспективным считается коммуникативный метод. Особенностью данного метода является «склонность к семантике и реализации коммуникативной компетенции», что подразумевает сочетание собственно лингвистической и культурно-ориентированной лингвистической компетентности, когда знание лексико-грамматической структуры языка сочетается со знанием культурных особенностей страны, ее традиций и обычаев.
1. Алексеева Л.М., Василенко Д.В. Системность терминологии [Электронный ресурс] // Вестник Пермского университета. Российская и зарубежная филология. 2015. № 4 (32). // URL: https://cyberleninka.ru/article/n/sistemnost-terminologii (дата обращения: 30.01.2019).
2. Военная энциклопедия [Текст]: в 8 т. / М-во обороны Российской Федерации, Ин-т военной истории; гл. ред. комис.: С.Б. Иванов — пред. [и др.]. -Москва: Воениздат, 2004. Т. 8. 579 с.
3. Гринев С.В. Введение в терминоведение/ С.В. Гринев. М.: Московский лицей, 1993. 309 с.
4. Глушко М.М. Функциональный стиль общественного языка и методы его исследования / М.М. Глушко. М., 1974. 160 с.
5. Исаева Е.Д. Особенности японской военной терминологии / Е.Д. Исаева // Вестник Иркутского государственного лингвистического университета. -2009. №4. С. 29-34.
6. Коровушкина В.П. Основы контрастивной социолектологии: Монография: В 2 ч. Череповец: ГОУ ВПО ЧГУ, 2005. Ч. 2. 284 с.
7. Лейчик В.М. Терминоведение: предмет, методы, структура. М., 2007. 256 с.
8. Лотте Д.С. Очередные задачи научно-технической терминологии // Известия Академии наук СССР. Отделение общественных наук. VII серия. 1931. № 4. С. 883-891.
9. Лукьянчук Ю.О. Способы классификации военных терминов /Лукьянчук Ю.О. // Научные записки национального университета «Острожская академия», Киев. 2017. № 66. С. 65-67.
10. Сафаров Р.Т. Военная лексика татарского языка/ Р.Т. Сафаров. Казань, 2015. 196 с.
11. Сдобнова Ю.Н. Некоторые дискурсивные особенности современной военной терминосистемы вооруженных сил Франции // Вестник Московского государственного лингвистического университета. 2014. №10 (696). С. 195-209.
12. Ушаков Д.Н. Толковый словарь русского языка. М.: Альта-Принт, 2005. 1216 с.
13. ШевчукВ.Н. Военно-терминологическая система в статике и динамике: дис. д-ра филол. наук / В.Н. Шевчук. Военный институт, 1985. 488 с.
1. Alekseeva, L.M., Vasilenko, D.V. (2015). Sistemnost’ terminologii [Consistency of terminology] [Ehlektronnyi resurs] // Vestnik Permskogo universiteta. Rossiiskaya i zarubezhnaya filologiya. №4 (32). URL: https://cyberleninka.ru/article/n/sistemnost-terminologii (accsessed: 30.01.2019).
2. Voennaya ehntsiklopediya [Military encyclopedia] (2004) [Tekst]: v 8 t. / M-vo oborony Rossiiskoi Federatsii, In-t voennoi istorii; gl. red. komis.: S.B. Ivanov -pred. [i dr.]. Moskva: Voenizdat. T. 8. 579 s.
3. Grinev, S.V. (1993). Vvedenie v terminovedenie [Introduction to terminology] / S.V. Grinev. M.: Moskovskii litsei. 309 s.
4. Glushko, M.M. (1974). Funktsional’nyi stil’ obshchestvennogo yazyka i metody ego issledovaniya [Functional style of public language and methods of its research] / M. M. Glushko. M. 160 s.
5. Isaeva, E.D. (2009). Osobennosti yaponskoi voennoi terminologii [Features of Japanese military terminology] / E.D. Isaeva // Vestnik Irkutskogo gosudarstvennogo lingvisticheskogo universiteta. №4. S. 29-34.
6. Korovushkina, V.P. (2005). Osnovy kontrastivnoi sotsiolektologii: Monografiya: V 2 ch. [Outline of contrastive socioecology: Monograph: in 2 hours] -Cherepovets: GOU VPO CHGU. Ch. 2. 284 s.
7. Leichik, V.M. (2007). Terminovedenie: predmet, metody, struktura [Terminology: subject, method, structure]. M. 256 s.
8. Lotte, D.S. (1931). Ocherednye zadachi nauchno-tekhnicheskoi terminologii [Next tasks of scientific and technical terminology] // Izvestiya Akademii nauk SSSR. Otdelenie obshchestvennykh nauk. VII senya. №4. S. 883-891.
9. Luk’yanchuk, Yu.O. (2017). Sposoby klassifikatsii voennykh terminov [Methods for classifying military terminals] /Luk’yanchuk Yu.O. // Nauchnye zapiski natsional’nogo universiteta «Ostrozhskaya akademiYA», Kiev. №66. S. 65-67.
10. Safarov, R.T. (2015). Voennaya leksika tatarskogo yazyka [Military vocabulary of the Tatar language] / R.T. Safarov. Kazan’. 196 s.
11. Sdobnova, Yu.N. (2014). Nekotorye diskursivnye osobennosti sovremennoi voennoi terminosistemy vooruzhennykh sil Frantsii [Some discursive features of the modern military term system of the French armed forces] // Vestnik Moskovskogo gosudarstvennogo lingvisticheskogo universiteta. №10 (696). S. 195-209.
12. Ushakov, D.N. (2005). Tolkovyi slovar’ russkogo yazyka [Explanatory dictionary of the Russian language]. M.: Al’ta-Print. 1216 s.
13. Shevchuk, V.N. (1985). Voenno-terminologicheskaya sistema v statike i dinamike: dis. d-ra filol. nauk [Military terminology system in statics and dynamics: Dis. . d-r. of filol. sciences] / V.N. Shevchuk. Voennyi institute. 488 s.
Authors of the publication
Biderkesen Durdu — lecturer Kazan Federal University Kazan, Russia
Бидеркесен Дурду — ассистент Казанский федеральный университет г. Казань, Россия
У каждого элемента есть свое значение которое
Автодополнение полей ввода без JavaScript.
Время чтения: 14 мин
Открыть/закрыть навигацию по статье
Контрибьюторы:
- Светлана Коробцева ,
- Татьяна Фокина
Обновлено 15 ноября 2023
Кратко
Скопировать ссылку «Кратко» Скопировано
Элемент — это источник предложений, то есть такой элемент, который содержит предопределённые варианты выбора для пользователя. В основном за варианты выбора опций выступают элементы .
У тега по умолчанию есть роль listbox .
Пример
Скопировать ссылку «Пример» Скопировано
form> label for="my-browser">Выберите браузер из списка:label> input type="text" list="browsers" id="my-browser" name="my-browser"> datalist id="browsers"> option value="Chrome"> option value="Firefox"> option value="Yandex Browser"> option value="Opera"> option value="Safari"> option value="Microsoft Edge"> datalist> form>
Как пишется
Скопировать ссылку "Как пишется" Скопировано
Перед использованием элемент нужно связать с элементом через атрибут list :
input list="fruits"> datalist id="fruits"> option value="Банан"> option value="Арбуз"> option value="Киви"> datalist>
Элемент не сработает, если между элементами и будет любой другой элемент c id . Даже если это сам со значением, которое равно значению атрибута list элемента :
form> label for="fruits">Выберите фрукт из неработающего списка:label> input list="fruitsList" id="fruits" name="fruits"> div id="fruitsList"> datalist id="fruitsList"> option value="Банан"> option value="Арбуз"> option value="Киви"> datalist> div> form>
Как понять
Скопировать ссылку "Как понять" Скопировано
Элемент не отображается браузерами, его значение display по умолчанию none . просто содержит набор каких-то предопределённых вами вариантов выбора — опций. Их можно будет выбрать из выпадающего списка после того, как свяжите их с . Эти значения будут по-разному отображаться в зависимости от значения атрибута type у .
Элемент можно связать с элементом только через атрибут list , но этот атрибут поддерживается не всеми интерактивными элементами.
Элемент не будут работать с элементом , если у одно из следующих значений атрибута type :
- hidden ;
- password ;
- checkbox ;
- radio ;
- file ;
- submit ;
- image ;
- reset ;
- button .
Интерактивные элементы, поддерживающие
Скопировать ссылку "Интерактивные элементы, поддерживающие datalist" Скопировано
text , search
Скопировать ссылку "text, search" Скопировано
Элемент со значением text или search у атрибута type — это однострочный интерактивный элемент для редактирования обычного текста.
Значения text , search атрибута type элемента имеют функцию автодополнения.
По мере набора текста в поле для ввода браузер выдаёт пользователю варианты, которые, в случае совпадения, он находит в элементе .
При поиске предложения в элементе браузер ориентируется не только на значение элемента , но и на атрибут label , если он указан. Также атрибут label будет отображаться в выпадающем списке, если он не совпадает со значением элемента .
form> label for="my-browser">Текстовое поле:label> input type="text" list="browsers" id="my-browser" name="my-browser"> datalist id="browsers"> option value="Chrome" label="Google"> option value="Firefox" label="Mozilla"> option value="Opera" label="Opera"> datalist> form>
Здесь у каждого элемента есть атрибут label . У последнего элемента значения атрибутов value и label совпадают, поэтому в выпадающем списке метка не будет отображаться.
Работа атрибута label отличается от браузера к браузеру. Например, в Firefox значение атрибута label — опция в выпадающем списке, а значение в атрибуте value подставляется в поле ввода только тогда, когда пользователь выберет опцию из списка. В Safari метки не отображаются вовсе.
tel
Скопировать ссылку "tel" Скопировано
Элемент со значением tel атрибута type — это интерактивный элемент для редактирования телефонного номера. Предложения элемента отображаются с этим типом также, как и с типом text .
url
Скопировать ссылку "url" Скопировано
Элемент со значением url атрибута type — это интерактивный элемент для редактирования одного абсолютного URL. Предложения элемента отображаются с этим типом также, как и с типом text .
Скопировать ссылку "email" Скопировано
Элемент со значением email атрибута type — это интерактивный элемент для редактирования адреса электронной почты. Предложения элемента отображаются с этим типом также, как и с типом text .
Если у элемента указан атрибут multiple , появляется одна особенность. Поле для ввода позволяет указать несколько электронных почт через запятую. После знака запятой автодополнение будет всё так же работать.
date , month , week , time
Скопировать ссылку "date, month, week, time" Скопировано
Элемент со значением date , month , week или time атрибута type — это интерактивный элемент для выбора определённой даты, месяца, недели или времени.
Чтобы предложения элемента правильно отображались в интерактивных элементах, необходимо соблюдать определённые правила написания значения элемента . Основные правила для date , month , week :
- Все значения разделяются через дефис.
- Год должен быть больше 0 и состоять из 4 цифр.
- Месяц должен состоять из двух цифр и быть не меньше 1, но и не больше 12.
- Число должно состоять из двух цифр и быть не меньше 1, но и не больше 31.
- Неделя должна состоять из двух цифр и быть не меньше 1, но и не больше 53 либо 52, в зависимости от года (високосный или невисокосный). Номер недели указывается после символа W .
Порядок написания для date , month , week следующий:
- date — год-месяц-число;
- month — год-месяц;
- week — год-неделя;
Для типа time действуют следующие правила:
- Все значения разделяются двоеточием.
- Час должен состоять из двух цифр и быть не меньше 0, но и не больше 23.
- Минута должна состоять из двух цифр и быть не меньше 0, но и не больше 59.
- Секунда должна состоять из двух цифр и быть не меньше 0, но и не больше 59.
Секунда также может быть не целой и иметь дробную часть. Для отделения целой части от дробной используется знак точки. Дробная часть должна состоять максимум из 3 цифр.
Порядок написания для time следующий:
- с использованием целой секунды — час:минута:секунда;
- если у секунды есть дробная часть — час:минута:секунда.дробь.
Итоговый код с примерами всех описанных интерактивных элементов для работы со временем:
form> label for="dateInput">Укажите дату:label> input type="date" list="dateList" id="dateInput"> datalist id="dateList"> option value="2022-10-10" label="Сегодня"> option value="2022-10-03" label="Неделю назад"> option value="2022-10-17" label="Неделю спустя"> datalist> form> form> label for="monthInput">Укажите месяц:label> input type="month" list="monthList" id="monthInput"> datalist id="monthList">datalist> option value="2022-10" label="Осень"> option value="2022-12" label="Зима"> option value="2022-03" label="Весна"> datalist> form> form> label for="weekInput">Укажите неделю:label> input type="week" list="weekList" id="weekInput"> datalist id="weekList"> option value="2022-W12" label="Двенадцатая неделя"> option value="2022-W52" label="Последняя неделя"> option value="2022-W1" label="Первая неделя"> datalist> form> form> label for="timeInput">Укажите время:label> input type="time" list="timeList" id="timeInput" step="any"> datalist id="timeList"> option value="08:00:20" label="Утром"> option value="12:00" label="Днём"> option value="18:00" label="Вечером"> datalist> form>
В некоторых браузерах время ограничено с точностью до минуты, поэтому в элементы с секундами в значении не будут отображаться в выпадающем списке с атрибутом type = "time" . Если в выпадающем списке нужно время с точностью до секунды, задайте атрибут step = "any" .
datetime - local
Скопировать ссылку "datetime-local" Скопировано
Элемент со значением datetime - local атрибута type — это интерактивный элемент для установки местной даты и времени, без информации о смещении часового пояса.
Порядок написания для datetime - local разделён на две части:
- первая часть — год-месяц-число;
- вторая часть — час:минута:секунда.
Части разделяются пробелом или символом T .
form> label for="datetimeInput">Укажите дату:label> input type="datetime-local" list="dateList" id="datetimeInput"> datalist id="dateList"> option value="2022-10-10 12:00" label="Сегодня днём"> option value="2022-10-03T08:00" label="Неделю назад утром"> option value="2022-10-17 17:00" label="Через неделю вечером"> datalist> form>
number
Скопировать ссылку "number" Скопировано
Элемент со значением number атрибута type — это интерактивный элемент для установки числа. Предложения элемента отображаются с этим типом также, как и с типом text .
range
Скопировать ссылку "range" Скопировано
Элемент со значением range атрибута type — это интерактивный элемент для установки числа, как и number , но с более простым отображением в виде ползунка.
Чтобы предложения элемента правильно отображались в интерактивном элементе range , значения опций, элементов , должны быть числом с плавающей точкой.
Если значения указаны верно, то браузер при рендеринге будет отображать засечки, которые обозначают элемент .
form> label for="rangeInput">Укажите число:label> input type="range" list="rangeList" id="rangeInput"> datalist id="rangeList"> option value="0"> option value="25"> option value="50"> option value="75"> option value="100"> datalist> form>
За отображение числового значения под ползунком в демке отвечает элемент .
color
Скопировать ссылку "color" Скопировано
Элемент со значением color атрибута type — это интерактивный элемент для выбора цвета.
Чтобы предложения элемента правильно отображались в интерактивном элементе color , значения опций, элементов , должны быть в виде шестнадцатеричного значения цвета.
Правильное значение должно состоять из 7 символов #000000 , включая решётку # . Сокращённые значения #000 работать не будут.
form> label for="colorInput">Укажите цвет:label> input type="color" list="colorList" id="colorInput"> datalist id="colorList"> option value="#FF6347" label="Tomato"> option value="#F5DEB3" label="Wheat"> option value="#DDA0DD" label="Plum"> datalist> form>
На данный момент Firefox поддерживает частично. Нормально работают только интерактивные элементы с типами text , search , url , tel , email и number . Помимо этого, функция автодополнения браузера работает немного по-другому, а сам выпадающий список отличается от большинства браузеров. Так что, проверяйте работу в Firefox.
Различия между и
Скопировать ссылку "Различия между select и datalist" Скопировано
В интерактивных элементах с вводом значений можете указать своё значение или выбрать что-то из предложенного в списке.
С другой стороны, если добавить атрибут multiple к , появится возможность выбрать несколько вариантов из выпадающего списка. Множественный выбор у интерактивных элементов, связанных с элементом , работает только у типа email .
Обратная совместимость
Скопировать ссылку "Обратная совместимость" Скопировано
Для обратной совместимости с устаревшими браузерами элементы и используются вместе.
Есть два способа:
Первый способ. Если предопределённые элементы выбора не важны в устаревших браузерах, достаточно использовать элемент с дочерними элементами .
Выглядит это так:
Введите породу вашей собаки: p> label> Введите породу вашей собаки: input type="text" name="breed" list="breeds"> label> datalist id="breeds"> option value="Австралийская овчарка"> option value="Акита-ину"> option value="Алабай"> datalist> p>
Устаревшие браузеры не поддерживают элемент и атрибут value у элемента . Чтобы функция автодополнения подсказывала предопределённые варианты выбора в современных браузерах, значения элементов указываются в атрибутах value . Если сделать значения содержимым , тогда они будут отображаться в устаревших браузерах.
В итоге в устаревших браузерах будет отображаться только элемент , в который пользователь введёт нужное значение. В современных браузерах будет элемент с выпадающим списком и автодополнением.
Второй способ. Если предопределённые значения нужно показать в устаревших браузерах, то вложите элементы в элемент и сделайте значения элементов содержимым , а не указывайте их в атрибуте value . Если указать значения в value , они не будут отображаться в выпадающем списке . Наконец, вложите с дочерними элементами в .
Выглядит это так:
Введите породу вашей собаки: или выберите одну из списка: Австралийская овчарка Акита-ину Алабайp> label> Введите породу вашей собаки: input type="text" name="breed" list="breeds"> label> datalist id="breeds"> label> или выберите одну из списка: select name="breed"> option>Австралийская овчарка option>Акита-ину option>Алабай select> label> datalist> p>
Современный браузер не отобразит элементы и , которые вложены в . Однако браузер не будет игнорировать элементы с в , они станут элементами .
В итоге в современных браузерах отобразиться элемент с выпадающим списком и автодополнением. Устаревший браузер будет игнорировать элемент и предложит ввести своё значение при помощи элемента или выбрать значение из выпадающего списка .
Доступность
Скопировать ссылку "Доступность" Скопировано
Хотя у есть встроенная семантика, тег нельзя назвать полностью доступным. Например, не все скринридеры зачитывают содержимое выпадающего списка с вариантами для автозаполнения.
Следующая проблема связана с CSS — пока у разработчиков нет возможности стилизовать выпадающий список и пункты в нём, а стили по умолчанию далеки от совершенства. Также к списку не применяются системные цвета в режиме высокой контрастности. В нём он выглядит точно так же, как в обычно режиме отображения цветов.

Наконец, пункты выпадающего списка не увеличиваются при масштабировании.

На практике
Скопировать ссылку "На практике" Скопировано
Алексей Степанов советует
Скопировать ссылку "Алексей Степанов советует" Скопировано
Про проблему стилизации выпадающих списков известно давно. Выпадающий список опций элемента не исключение и стилизовать его не получится, но можно поменять иконку стрелки у некоторых элементов или изменить цвет календаря или циферблата.
Так как браузеры по-разному отображают интерактивные элементы, давайте разберём пример только для тех браузеров, которые поддерживают псевдоэлемент : : - webkit - calendar - picker - indicator . Он отвечает за всплывающую иконку со стрелкой, календарём и циферблатом у интерактивных элементов.
Вот как можно изменить вид стрелки.
Скроем псевдоэлемент : : - webkit - calendar - picker - indicator через свойство display : none :
[list]::-webkit-calendar-picker-indicator display: none !important;>[list]::-webkit-calendar-picker-indicator display: none !important; >
Укажем модификатор !important для интерактивных элементов с типом text , search , url , email , tel или number . Без модификатора иконка со стрелкой при наведении продолжит появляться.
Это CSS-правило не стоит применять для интерактивных элементов с типом date , month , week , datetime - local . Если скрыть элемент (циферблат или календарь), то пропадёт возможность выбрать предопределённый вариант из выпадающего списка.
Правда, есть один интерактивный элемент, у которого не получится изменить иконку со стрелкой. Это элемент с типом color .
После того, как скрыли псевдоэлемент, можно использовать свою иконку. Хороший пример можно посмотреть в разделе «На практике» доки про .
Иконки с циферблатом и календарём у интерактивных элементов с типом date , month , week и datetime - local по умолчанию тёмного цвета. Если нужно изменить цвет на белый, используйте свойство filter и укажите в значении функцию invert ( ) со значением 1 :
[list]::-webkit-calendar-picker-indicator filter: invert(1);>[list]::-webkit-calendar-picker-indicator filter: invert(1); >
Атрибут id
В HTML есть много атрибутов, и у каждого из них своя задача. Познакомимся поближе с атрибутом id . В его названии изначально заложен основной смысл — identifier, то есть идентификатор. Он задаёт HTML-элементу уникальное название, которое должно быть единственным в рамках документа.
Значение атрибута
Есть несколько условий, которые нужно учитывать при задании атрибута id :
- Значение должно содержать как минимум один символ.
- Значение не должно содержать пробелов, табуляций и так далее.
- Значение должно начинаться с латинской буквы, потому что цифры и символы _ , - , . не были разрешены в HTML4 и могут вызвать проблемы с совместимостью.
Использование атрибута
Стилизация
Атрибут может быть использован для задания стилей элемента. При этом в большинстве случаев такой способ — не самый подходящий для стилизации, потому что в качестве селектора id обладает высокой специфичностью. Из-за этого становится сложнее переопределить свойства при необходимости. Если не нужно задавать для элемента определённые стили с высокой специфичностью, в качестве альтернативы лучше задать элементу класс.
Атрибут id должен быть уникальным на странице, но класс — нет. Он позволяет как обращаться к конкретному элементу, так и стилизовать элементы группами, если у них задан одинаковый класс. Ещё одно различие — значение id всегда должно быть одно, но элементу можно задать несколько значений в атрибуте class , указывая их через пробел.
Связывание поля ввода и подписи по id
Атрибут id также используется при создании форм. К полям ввода в форме часто нужно добавлять подписи для описания того, что нужно ввести пользователю. В этом случае используется специальный тег label , который логически связывает текст подписи и конкретное поле ввода. Например, при такой связке клик по подписи автоматически переместит курсор в поле ввода.
Связать поле ввода и подпись к нему можно, просто обернув поле ввода в тег label вместе с текстом подписи. Но такой способ в некоторых случаях может быть неудобен — например, когда в разметке между полем и подписью есть другие элементы. В таких случаях будет полезен второй способ — с использованием id . Чтобы связать поле ввода и подпись с его помощью нужно:
- Добавить полю ввода идентификатор, задав значение атрибуту id .
- Добавить тегу label атрибут for и указать в нём значение идентификатора поля ввода.
Создание якоря с помощью id
Можно задать идентификатор фрагменту в любом месте HTML-страницы, а затем получать быстрый доступ к нему через id . Такой якорь удобен, когда на странице много данных, и нужно иметь возможность быстро перейти к определённому разделу.
Для создания якоря нужно:
- Присвоить атрибут id элементу, к которому мы хотим иметь быстрый доступ.
- Добавить ссылку на этот элемент там, откуда мы хотим осуществлять переход.
Например, можно сделать навигацию по странице в начале документа, а ссылки на разделы превратить в якоря, тогда можно будет быстро пролистывать страницу к нужному разделу, кликнув по его названию.
Также с помощью id можно ссылаться на конкретное место в другом документе, дописав в конце адреса идентификатор нужного фрагмента.
Получение доступа к элементу из JavaScript
С HTML-элементом часто нужно работать из JavaScript. В языке есть специальный метод, чтобы найти элемент по атрибуту id и получить к нему доступ — getElementById() . Дальше с найденным элементом можно производить нужные действия.
const button = document.getElementById('button'); button.addEventListener('click', function () < alert('Click!'); >);
«Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.
Структуры данных: пирамида (двоичная куча) в Java

Привет-привет! Никто не будет отрицать, что алгоритмы и структуры данных — неоспоримый фундамент программирования. Да, можно и работать программистом и без их знания, но увы, далеко вы так не уедете. Поэтому чтобы усилить вашу базу знаний в этой области, хотелось бы поговорить о такой структуре данных как пирамида (еще известная как куча и двоичная куча). Как правило такие структуры данных применяют в различных планировщиках и других структурах, в которых нужно обозначить приоритетность различных задач. Итак.
Пирамида — это разновидность дерева, которая обеспечивает вставку/удаление за время O(logN) и обладает следующими свойствами:
- Полнота. Все уровни дерева содержат все возможные узлы, кроме последнего, который может быть заполнен лишь частично и который заполняется слева-направо;
- Пирамида как правило реализуется на базе массива;
- Для каждого узла в пирамиде есть основополагающее условие, что значение каждого узла больше (или равно) значениям его потомков. Соответственно, максимум будет храниться в верхнем элементе.
Пирамида, состоящая из вершин, которые хранят значения не выше 10:
Хотелось бы отметить, что по сравнению с деревом двоичного поиска пирамида является слабо упорядоченной , так как в дереве двоичного поиска ключ левого потомка меньше ключа правого потомка, а в пирамиде такое условие отсутствует.
Удаление элемента по индексу

Для начала давайте рассмотрим, какова же последовательность действий при удалении выбранного узла:
- Удалить выбранный узел.
- Переместить последний узел, в последнем ряду на место удаленного.
- Смещать его вниз до тех пор, пока он не окажется ниже большего и выше меньшего узла.
Когда используют пирамиду, то как правило необходимо уметь удалять вершину (нулевой элемент внутреннего массива) или последний (тогда операции по перемещению можно опустить, оставив только удаление элемента). В качестве примера удаления элемента по индексу в рассматриваемой нами пирамиде выше мы удалим узел со значением 7:
- Удаляем выбранный узел и помещаем на его место последний, который у нас имеет значение 4: Но в таком положении данный узел не соответствует условию, что каждый узел потомок не должен быть больше рассматриваемого, не так ли? Поэтому:
- Меняем его местами с наибольшим из потомков, который имеет значение 6: Далее смотрим, нет ли потомков со значением большим, чем у нашего смещаемого элемента, и видим что нет, а это значит, что элемент стал на свое место.
Вставка нового элемента
Каковы же действия при вставке нового элемента:
- Вставляемый узел помещается в конец пирамиды. Но ведь у нас же есть условие, что дочерний элемент не может иметь значение больше родительского, верно? Поэтому:
- Сравниваем новый элемент с родительским элементом. Если новый элемент меньше, то операция закончена, если нет, то он меняется местами с родительским элементом. После — начинает сравниваться с новым родительским элементом, и так далее. До тех пор, пока родительский элемент не будет больше нового.
К примеру, в пирамиду, которая была получена в результате удаления элемента, мы хотим добавить элемент со значением 8:
- Помещаем новый узел в конец пирамиды:

- Сравниваем новый элемент с родительским элементом, который имеет значение 4. Так как новый элемент больше родительского, меняем их местами:

- Сравниваем новый элемент с новым его родителем и видим, что наш элемент больше и его (8>7), поэтому меняем местами и их:
Опять же, сравниваем элемент с родительский элементом и видим, что в этот раз родительский элемент больше, а это значит что наш новый элемент стал на свое место.
Замена элемента

При замене элемента сперва нужно заменить элемент с заданным индексом. Логично, не так ли? Ну а что далее? Ведь новое значение элемента уже другое, и не факт, что оно соответствует условию пирамиды. То есть не факт что все дочерние элементы меньше вставляемого элемента. Также не факт, что родительские элементы больше нового. Поэтому сперва нужно сравнить со старым значением элемента:
- если новый элемент больше, чем он, то нам нужно сравнивать его с родительскими элементами и при надобности менять их местами;
- если же новый элемент меньше, то нужно сравнивать с большим из дочерних элементов и менять местами, если дочерний элемент окажется больше (до тех пор, пока новый элемент не станет на допустимое место).
Давайте же это рассмотрим на нашем примере. Сейчас мы хотим вставить элемент со значением 1 вместо элемента со значением 9:
- Вставляем элемент на место предыдущего:
- Сравниваем предыдущий элемент 9 и новый 1 и видим, что меньше, а значит, мы будем пробовать смещать вниз.
- Сравниваем с большим элементом из дочерних, то есть с тем, который имеет значение 5, и видим, что новый меньше. Поэтому меняем сравниваемые элементы местами:
- Так как сейчас новых элементов ниже нашего нового уже нет, можно сказать, что элемент встал на свое место.
Реализация пирамиды на Java
После понимания принципа работы данной структуры самое время рассмотреть реализацию пирамиды на Java : Класс, представляющий одну вершину и значение, которое она содержит:
public class Node < private int value; public Node(int value) < this.value = value; >public int getValue() < return this.value; >public void setValue(int value) < this.value = value; >>
Класс, представляющий саму пирамиду:
public class Heap < private Node[] heapArray; // массив со всеми вершинами private int maxSize; // размер массива private int currentSize; // количество узлов массиве public Heap(int maxSize) < // создание пустой пирамиды this.maxSize = maxSize; this.currentSize = 0; heapArray = new Node[maxSize]; >public void printHeap() < // отображение перамиды в консоль System.out.println("Массив значений: "); for (int n = 0; n < currentSize; n++) < if (heapArray[n] != null) < System.out.println(heapArray[n].getValue() + " "); >else < System.out.println("-"); >> System.out.println(); int countOfGaps = 32; int itemsPerRow = 1; int columnNumber = 0; // номер элемента в данной строке String lines = "___________________________________________________________________"; System.out.println(lines); for (int i = 0; i < currentSize; i++) < if (columnNumber == 0) < // проверяем первый элемент ли в текущей строке for (int k = 0; k < countOfGaps; k++) < // добавляем предшествующие пробелы System.out.print(' '); >> System.out.print(heapArray[i].getValue());// выводим в консоль значение вершины if (++columnNumber == itemsPerRow) < // проверяем последний ли элемент в строке countOfGaps /= 2; // уменьшаем количество оступов применяемое для следующей строки itemsPerRow *= 2; // указываем, что элементов может быть вдвое больше columnNumber = 0; // сбрасываем счётчик для текущего элемента строки System.out.println(); // переходим на нову строку >else < //переход к следующему элементу for (int k = 0; k < countOfGaps * 2 - 2; k++) < System.out.print(' '); // добавляем оступы >> > System.out.println("\n" + lines); // нижний пункир > public boolean insertNode(int value) < // вставка нового значения if (currentSize == maxSize) < // проверяем не выходим ли мы за рамки массива return false; >Node newNode = new Node(value);// создание вершины с данным значением heapArray[currentSize] = newNode;// вершину задём в самый низ дерева displaceUp(currentSize++);// пытаемся поднять вершину, если значение вершины позволяет return true; > public Node removeNode(int index) < // удалить элемент по индексу массива if(index >0 && currentSize > index) < Node root = heapArray[index]; heapArray[index] = heapArray[--currentSize]; // задаём элементу с переданным индексом, значение последнего элемента heapArray[currentSize] = null;// последний элемент удаляем displaceDown(index);// проталкиваем вниз новый элемент, чтобы он должное ему место return root; >return null; > public boolean changeNode(int index, int newValue) < if (index < 0 || currentSize<=index) < return false; >int oldValue = heapArray[index].getValue(); // сохраняем старое значение heapArray[index].setValue(newValue); // присваиваем новое if (oldValue < newValue)/ если узел повышается displaceUp(index); // выполняется смещение вверх > else < // если понижается displaceDown(index); // смещение вниз >return true; > private void displaceUp(int index) < //смещение вверх int parentIndex = (index - 1) / 2; // узнаем индекс родителя Node bottom = heapArray[index]; // берем элемент while (index >0 && heapArray[parentIndex].getValue() < bottom.getValue())/ если родительский элемент меньше heapArray[index] = heapArray[parentIndex];// то меняем его местами с рассматриваемым index = parentIndex; parentIndex = (parentIndex - 1) / 2;// берем новый родительский индекс и повторяем сравнение элементов > heapArray[index] = bottom;// соохраняем результат > private void displaceDown(int index)/ смещение вниз int largerChild; Node top = heapArray[index]; // сохранение корня, пока у узла есть хотя бы один потомок while (index < currentSize / 2) / если данное условие не выполняется то элемент уже в самом низу пирамиды int leftChild = 2 * index + 1; // вычисляем индексы в массиве для левого узла ребенка int rightChild = leftChild + 1;// и правого if (rightChild < currentSize && heapArray[leftChild].getValue() < heapArray[rightChild].getValue()) < largerChild = rightChild; > // вычисляем ребенка вершину с наибольшим числовым значением else < largerChild = leftChild; >if (top.getValue() >= heapArray[largerChild].getValue())/ если значение вершины больше или равно //значени его наибольшего ребенка break;// то выходим из метода > heapArray[index] = heapArray[largerChild];// заменяем вершину, большей дочерней вершиной index = largerChild; // текущий индекс переходит вниз > heapArray[index] = top; // задаем конечное местоположение для элемента > >
И наконец, давайте посмотрим на нашу пирамиду в деле:
public class Solution < public static void main(String[] args) < // задаем начальные данные: Heap heap = new Heap(31); heap.insertNode(120); heap.insertNode(40); heap.insertNode(50); heap.insertNode(80); heap.insertNode(20); heap.insertNode(100); heap.insertNode(150); heap.insertNode(30); heap.insertNode(210); heap.insertNode(180); heap.insertNode(10); heap.insertNode(90); // выводим начальную пирамиду в консоль heap.printHeap();

Вывод в консоли:
// изменяем элемент под индексом 0 с 210 на 15, и выводим в консоль измененную пирамиду heap.changeNode(0,15); heap.printHeap();

Вывод в консоли:
// удаляем элемент под индексом 3, который имеет значение 80 и смотрим на изменившуюся пирамиду heap.removeNode(3); heap.printHeap(); > >
Вывод в консоли:
Ну вот, собственно, и всё. Всем спасибо за внимание!
