Архив рубрики: Публикации

Что делает сообщество Linux особенным

В 2021 существует множество причин почему люди любят Linux ещё больше чем раньше. Сообщество пользователей Linux — одна из краеугольных причин использовать эту операционную систему.

Многие пользователи скажут, что ключевая особенность Linux — это его сообщество. Это может показаться странным новым пользователям, потому что термин «сообщество» уже достаточно популярен в наши дни. Существуют даже менеджеры по созданию и управлению сообществами. Давайте разберемся что же выделяет сообщество Linux на фоне всех остальных.

Читать

Объяснение сетевых уровней OSI

Модель взаимодействия открытых систем (OSI) концептуально иллюстрирует семь уровней абстракции инфраструктуры связи, которые устройства используют для взаимодействия по сети. В 1980-х годах эта модель была общепринятой стандартной структурой сетевой коммуникации.

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

Он был представлен Организацией стандартов Интернета в 1984 году, когда компьютерные сети только становились новой концепцией. Хотя в наши дни Интернет основан на более простой сетевой модели TCP/IP. 7-уровневая модель OSI по-прежнему используется для визуализации базовой сетевой архитектуры и устранения неполадок.

 

7 уровней модели OSI

Модель OSI разделена на семь уровней для представления сетевой архитектуры. Каждый уровень выполняет свой собственный набор задач и взаимодействует с вышележащими и нижними уровнями для успешной передачи данных по сети. Давайте обсудим все слои и их свойства «сверху вниз».

 

7. Уровень приложения

Это единственный уровень, который включает прямое взаимодействие с данными от конечного пользователя. Другими словами, этот уровень обеспечивает взаимодействие человека с компьютером, так что веб-браузеры или приложения почтовых клиентов полагаются на него для обеспечения связи. Следовательно, приложения полагаются на уровень, чтобы использовать его протоколы и службы обработки данных для передачи полезной информации. Некоторые из наиболее распространенных протоколов уровня приложений — это HTTP, SMTP (обеспечивает связь по электронной почте), FTP, DNS и т. д.

 

6. Уровень презентации

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

 

5. Сессионный уровень

Как следует из названия, уровень сеанса отвечает за создание канала связи между устройствами, называемого сеансом. Этот уровень сохраняет канал связи открытым достаточно долго для успешного и бесперебойного обмена данными. В конце концов, после полной передачи он завершает сеанс, чтобы избежать потери ресурсов.

Сеансовый уровень также предлагает контрольные точки для синхронизации передачи данных. Таким образом, уровень может возобновить передачу сеанса с определенных контрольных точек, если она приостановлена ​​или прервана между ними, вместо передачи полностью с нуля. Он также отвечает за аутентификацию и переподключение.

 

4. Транспортный уровень

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

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

 

3. Сетевой уровень

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

Он выполняет логическую адресацию, чтобы найти наилучший физический маршрут для передачи пакета. На этом уровне маршрутизаторы играют очень важную роль, поскольку они однозначно идентифицируют каждое устройство в сети. Этот процесс называется маршрутизацией.

 

2. Уровень канала передачи данных

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

Уровень канала передачи данных состоит из двух подуровней. Первый из них, это управление доступом к среде (MAC), визуализирует поток управления с использованием MAC-адресов и мультиплексов для передачи устройств по сети. Logical Link Control (LLC) осуществляет контроль ошибок, идентифицирует линии протокола и синхронизирует кадры.

 

1. Физический слой

Самый нижний уровень этой модели — это физический уровень. Уровень отвечает за оптическую передачу данных между подключенными устройствами. Он передает необработанные данные в виде потоков битов с физического уровня устройства-отправителя на физический уровень устройства-получателя путем определения скорости передачи битов. Следовательно, он выполняет битовую синхронизацию и управление битовой скоростью. Поскольку он называется «физическим» уровнем, он включает в себя физические ресурсы, такие как кабели, сетевые модемы или концентраторы, повторители или адаптеры и т. д.

 

Преимущества модели OSI

  • Наиболее важная роль, которую играет модель OSI, — это заложить основу базовой сетевой архитектуры, обеспечить визуализацию и лучшее понимание.
  • Это помогает операторам сети разобраться в аппаратном и программном обеспечении, необходимом для самостоятельного построения сети.
  • Он понимает и управляет процессом, выполняемым компонентами в сети.
  • Позволяет упростить поиск и устранение неисправностей, точно определив слой, вызывающий проблемы. Помогает администраторам решить их соответствующим образом, не мешая остальным слоям в стеке.

 

Вывод

Модель OSI взаимодействия открытых систем — это эталонная модель, которая обеспечивает удобное представление данных, передаваемых по сети. Он разделяет задачи сетевой коммуникации на семь управляемых битов, выполняемых на каждом абстрактном уровне. Каждый уровень несет уникальную ответственность, полностью независимую от других слоев модели. В то время как некоторые уровни обрабатывают функции, связанные с приложением, остальные выполняют обязанности по транспортировке данных. Следовательно, он распределяет задания на быстрые и удобные уровни и считается архитектурной моделью компьютерных сетей.



2021-07-26T15:43:27
Сети

Смурф Атака

Smurf атака представляет собой тип отказа в обслуживании атаки (DOS), когда злоумышленник использует управления интернет — протокол обмена сообщениями (ICMP) пакеты. Атака возникает, когда злоумышленник отправляет целевую жертву огромным потоком поддельных пакетов ICMP echo_request.

Из этой статьи вы узнаете, как выполняется атака Smurf и какой ущерб может нанести сеть Smurf. В статье также будут описаны профилактические меры против атаки смурфов.

 

Задний план

Интернет-мир стал свидетелем первой атаки Smurf в 1990-х годах. Например, в 1998 году Университет Миннесоты подвергся атаке Smurf, продолжавшейся более 60 минут, в результате чего были закрыты несколько его компьютеров и полностью заблокированы сетевые службы.

Атака вызвала кибер-тупик, который также повлиял на оставшуюся часть Миннесоты, включая региональную сеть Миннесоты (MRNet). Впоследствии клиенты MRNet, в том числе частные компании, 500 организаций и колледжей, также испытали влияние.

 

Смурф Атака

Большое количество поддельных пакетов ICMP связано с IP-адресом жертвы, поскольку исходный IP-адрес создается злоумышленником с намерением транслировать их в сеть целевого пользователя с использованием широковещательного IP-адреса.

Интенсивность, с которой атака Smurf нарушает подлинный трафик сети, соответствует количеству хостов в центре организации сетевого сервера. Например, широковещательная IP-сеть с 500 хостами будет создавать 500 реакций на каждый запрос фальшивого эха. Планируемый результат — ослабить целевую систему, сделав ее неработоспособной и недоступной.

DDoS-атака Smurf получила свое известное название от инструмента под названием Smurf; широко использовались еще в 1990-е годы. Маленькие пакеты ICMP, созданные этим инструментом, вызвали большой шум среди людей, в результате чего получилось название Smurf.

 

Типы смурф атак

Базовая атака

Базовая атака Smurf происходит, когда организация жертвы оказывается между пакетами запросов ICMP. Пакеты рассыпаются, и каждое устройство, которое соединяется с целевой сетью в организации, затем отвечает на пакеты ICMP echo_request, вызывая большой объем трафика и потенциально отключая сеть.

 

Продвинутая атака

Эти виды атак имеют ту же базовую методологию, что и первичные атаки. В этом случае отличается то, что эхо-запрос настраивает свои источники для реакции на стороннюю жертву.

Затем сторонняя жертва получит эхо-запрос, запущенный из целевой подсети. Следовательно, хакеры получают доступ к фреймворкам, связанным с их уникальной целью, препятствуя большему подмножеству сети, чем то, что можно было вообразить, в случае, если они ограничили свое расширение одной жертвой.

 

Работающий

Хотя пакеты ICMP могут использоваться в DDoS-атаке, обычно они занимают важные должности в сетевой организации. Обычно сетевые или широковещательные менеджеры используют приложение ping, которое использует пакеты ICMP для оценки собранных аппаратных устройств, таких как ПК, принтеры и т. д.

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

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

В общем случае хост A отправляет хосту B приглашение ICMP Echo (ping), вызывая запрограммированную реакцию. Время, необходимое для проявления реакции, используется как часть виртуальной удаленности между обоими хостами.

В рамках организации IP-вещания запрос ping отправляется на все узлы сети, вызывая реакцию всех систем. С помощью атак Smurf злоумышленники используют эту способность для увеличения трафика на своем целевом сервере.

  • Вредоносная программа Smurf создает поддельный пакет, для которого в качестве исходного IP-адреса задан исходный IP-адрес жертвы.
  • Затем пакет отправляется на широковещательный IP-адрес сетевого сервера или брандмауэра, который затем отправляет сообщение с запросом на каждый адрес хоста внутри организации сетевого сервера, увеличивая количество запросов на количество упорядоченных устройств в организации.
  • Каждое связанное устройство внутри организации получает запрошенное сообщение от сетевого сервера и затем отвечает на поддельный IP-адрес жертвы с помощью пакета эхо-ответа ICMP.
  • В этот момент жертва сталкивается с потоком пакетов ICMP Echo Reply, которые, возможно, становятся перегруженными и ограничивают доступ легитимного трафика к сети.

 

Эффекты смурф атак

Наиболее очевидное воздействие, вызванное атакой Smurf, — это разрушение сервера корпорации. Он создает пробку в Интернете, успешно делая систему жертвы неспособной к выдаче результатов. Он может фокусироваться на пользователе или использоваться в качестве прикрытия для более вредоносных атак, таких как кража личной и частной информации.

Учитывая все это, влияние атаки Smurf на ассоциацию включает:

  • Потеря финансов: поскольку вся организация отступает или закрывается, деятельность организации прекращается.
  • Потеря информации: как уже упоминалось, атака Smurf также может означать, что злоумышленники захватывают вашу информацию. Это позволяет им извлекать информацию, пока вы заняты управлением DoS-атакой.
  • Вред для роста: утечка информации обходится дорого как с точки зрения денег, так и с точки зрения статуса. Клиенты могут потерять доверие к вашей ассоциации, поскольку конфиденциальные данные, которым они доверяют, теряют свою конфиденциальность и целостность.

 

Предотвращение смурф атак

Чтобы предотвратить атаки Smurf, можно использовать фильтрацию входящего трафика для анализа всех входящих пакетов. Им будет запрещен или разрешен вход в структуру в зависимости от подлинности их заголовка пакета.

Брандмауэр также можно перенастроить, чтобы блокировать эхо-запросы, отформатированные из сети за пределами сети сервера.

 

Вывод

Атака Smurf — это атака с потреблением ресурсов, которая стремится залить цель большим количеством поддельных пакетов ICMP. Со злым намерением использовать всю доступную пропускную способность. В результате для доступных пользователей не остается полосы пропускания.



2021-07-26T15:30:42
Безопасность

Какой у вас план аварийного восстановления?

Когда вы управляете малым бизнесом, вы, вероятно, не тратите время на размышления о том, что может пойти не так. Большую часть времени вы слишком заняты, чтобы убедиться, что все идет гладко. И если у вас есть возможность подумать о будущем, вы сосредотачиваетесь на положительных аспектах, составляя планы на тот момент, когда ваш бизнес будет взлетать.

Если вы когда-нибудь задумывались о том, что может пойти не так, вы, вероятно, начнете думать о гигантских катастрофах — супервулканах, вторжениях инопланетян и акулах, о боже.

Но когда мы говорим об аварийном восстановлении, мы не говорим об эпических кинематографических событиях, мы говорим о крошечных катастрофах, которые могут навсегда изменить ваш бизнес. Электроэнергия отключается в одночасье. Неисправный жесткий диск. Даже что-то простое, например, когда сотрудник, долгое время не обращающий внимания, перезаписывает файл.

Если у вас нет плана обеспечения непрерывности вашего бизнеса, эти небольшие проблемы могут превратиться в большие катастрофы — возможно, не во всемирный кризис, но определенно серьезный для вашего бизнеса.

 

Что такое план обеспечения непрерывности бизнеса?

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

Необязательно иметь подробный план всех возможностей, просто прочный каркас, который можно применить практически к любой проблеме. То же руководство, которое поможет вам выяснить, что делать в случае отказа жесткого диска, может работать так же хорошо, когда компьютер украден или даже когда целевой электромагнитный импульс разрушил всю электронику в вашем городе.

 

Как должен выглядеть мой план обеспечения непрерывности ИТ-бизнеса?

Это действительно зависит от того, чем вы занимаетесь в своем бизнесе и что в нем задействовано. Индивидуальный торговец с одним портативным компьютером сильно отличается от многонациональной компании с целой командой аварийного восстановления, которая также сильно отличается от небольшого магазина с парой компьютеров.

По сути, ваш технический план обеспечения непрерывности бизнеса должен быть:

  • С кем мне нужно поговорить?
  • Где я могу найти важную информацию?
  • Где я могу получить замену?

Итак, исходя из этого, он может включать:

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

Последний в этом списке невероятно важен. Если вы еще этого не сделали, позвольте нам объяснить вам это.

Ты

Нужно.

Резервные копии.

 

Что мне нужно для резервного копирования?

На самом деле, вы должны регулярно выполнять резервное копирование всего — если в нем есть нужная вам информация, у вас должна быть где-то ее копия. Будь то ваш рабочий мобильный телефон, ноутбук или веб-сайт, вы должны регулярно делать резервные копии и следить за тем, чтобы они хранились вне офиса.

С облачными вычислениями, безусловно, намного проще хранить ваши резервные копии отдельно. Больше не нужно беспокоиться о том, что вас похоронят под стопками компакт-дисков, вы больше не потеряете одну USB-флешку, больше не будет пыльных старых лент в углу вашего офиса. Просто загрузите и расслабьтесь.

И многие компании теперь предлагают автоматические резервные копии, которые идеально подходят для создания копий ваших веб-сайтов. Вам даже не нужно помнить о том, чтобы брать их — вы просто настраиваете их один раз, а затем они происходят каждую ночь, предоставляя вам быструю и легкую резервную копию вашего веб-сайта, когда вам это нужно.

И не забывайте время от времени проверять свои резервные копии! Вы же не хотите обнаруживать проблемы именно тогда, когда они вам нужны больше всего.

Резервное копирование не спасет ваш бизнес от всего. Вас не могут защитить от неистовых гигантских ящериц или астероидов, несущихся к Земле. Но если вы когда-либо допустили ошибку на веб-сайте и хотели бы, чтобы она исчезла волшебным образом, ваши резервные копии вас спасут.



2021-07-26T13:31:02
Безопасность

Как восстановить заводские настройки ноутбука HP

Ноутбуки HP широко популярны среди пользователей ПК. Они хорошо продуманы, надежны и доступны по цене. Именно поэтому  большая четверка консалтинговых компаний  часто выбирает бренд для своего офисного оборудования.

Но что, если вы окажетесь в ситуации, когда ваш ноутбук HP начинает капризничать? А может вы планируете от него избавиться? Самый простой способ устранить проблемы с производительностью и избавиться от любых сохраненных данных — выполнить сброс настроек ноутбука HP к заводским настройкам.

Ноутбуки HP поставляются с предустановленной операционной системой Microsoft Windows по умолчанию. И независимо от вашей версии Windows процесс сброса довольно прост. Мы проведем вас через ключевые шаги ниже.

 

Перед сбросом настроек ноутбука HP к заводским настройкам

Независимо от операционной системы, которую вы используете, имеет смысл создать резервную копию, прежде чем возвращать ее к заводским настройкам по умолчанию. Вы можете подумать, что в этом нет необходимости, если вы собираетесь перепродавать, но все равно лучше сохранить ваши старые файлы и данные. Возможно, вы захотите получить к ним доступ в будущем или, возможно, поместите некоторые из них на свой новый компьютер или другое устройство.

Мы рекомендуем использовать облачное хранилище для создания резервной копии. Таким образом, вы можете получить доступ к своим данным в любом месте, где есть Интернет или LTE. Самыми популярными бесплатными вариантами являются Google Drive, iCloud, Microsoft OneDrive и  Dropbox  (Basic). Но хороший старый внешний жесткий диск тоже подойдет.

 

Способы сброса настроек ноутбука HP

В основном есть два основных способа выполнить сброс операционной системы:

  • Получив доступ к заводскому разделу восстановления HP. В зависимости от модели ноутбука HP его формулировка может отличаться, но вы будете использовать HP Recovery Manager. Обратите внимание: этот метод работает только в том случае, если вы никогда раньше не стирали данные с накопителя на ноутбуке. Это лучший вариант, когда компьютер больше не загружает экран рабочего стола.
  • Сброс системы с помощью настроек Windows.  Этот метод будет работать, если у вас больше нет заводского раздела восстановления. Но для выполнения сброса в Windows ваш ноутбук должен загрузиться и нормально работать.

 

HP Recovery Manager

Скрытый раздел восстановления HP позволяет восстановить систему и ее драйверы до исходного состояния. Этот раздел предварительно загружен HP на накопитель вашего ноутбука, и если вам случится стереть диск или заменить его в любой момент, раздел будет утерян. Значит, этот метод восстановления работать не будет.

Но давайте предположим, что на вашем жестком диске не было внесено никаких изменений, а программное обеспечение HP Recovery Manager не повреждено. Начните с выключения ноутбука. Затем включите его и сразу же нажмите клавишу F11. После этого система должна загрузиться в Recovery Manager:

Доступ к заводскому разделу восстановления HP (F11).

Доступ к заводскому разделу восстановления HP (F11).

 

Компоновка может отличаться в зависимости от модели HP и года выпуска. Тем не менее, независимо от интерфейса, у вас будет опция, обычно в разделе «Восстановление системы», которая позволяет восстановить ваш компьютер до исходного заводского состояния. Выберите этот вариант и следуйте инструкциям на экране. Вам будет предложено создать резервную копию ваших файлов, но если вы уже сделали это, вы можете пропустить его и вместо этого выбрать вариант «  Восстановить без резервного копирования файлов».

После того, как Recovery Manager переформатирует диск и переустановит Windows, вы можете настроить его и продолжить использовать ноутбук, как обычно. Просто не забудьте запустить обновления Windows, как только вы подключитесь к Интернету, чтобы убедиться, что ваш компьютер настраивается плавно.

 

Сброс к заводским настройкам ноутбука HP в Windows 10

Мы рассмотрим процесс восстановления в Windows 10, поскольку это самая последняя версия ОС, а   выпуск Microsoft Windows 11 назначен на конец этого года. Шаги восстановления в Windows 8 очень похожи, но если ваш ноутбук HP по-прежнему работает под управлением Windows 7, вы можете загрузить обновление до Windows 10 непосредственно из Microsoft. Просто убедитесь, что вы устанавливаете ту же версию Windows, с которой изначально был установлен ваш компьютер; в противном случае он не активируется.

Чтобы сбросить настройки HP в Windows, выполните следующие действия:

  1. Щелкните меню «Пуск» в нижнем левом углу экрана и выберите «  Настройки» — «Обновление и безопасность» — «Восстановление». Параметр «Сбросить этот компьютер» позволит вам восстановить заводские настройки ноутбука HP.
  2. Кроме того, вы можете ввести «сброс» в строке поиска в левом углу экрана рабочего стола. Затем выберите «Сбросить этот компьютер», чтобы вернуться к заводским настройкам.

Еще один простой способ восстановить любую марку и модель ноутбука в Windows 10 — это перезагрузить систему, удерживая клавишу Shift. Эта функция перенесет вас на экран параметров загрузки, где вы можете выбрать «Устранение неполадок» и выполнить сброс:

Доступ к восстановлению с помощью метода клавиши Shift в Windows 10

Доступ к восстановлению с помощью метода клавиши Shift в Windows 10

 

Независимо от того, какой метод вы используете, во время сброса держите ноутбук HP подключенным к источнику питания.

 

Как сохранить работоспособность ноутбука HP после восстановления заводских настроек

После сброса настроек ноутбука HP к заводским настройкам важно обновлять программное обеспечение и драйверы. Эта простая мера потенциально может спасти вас от головной боли в будущем и дополнительных перезагрузок. Ваша Windows автоматически обновляется, когда появляется новое программное обеспечение, но рекомендуется время от времени выполнять ручную проверку. Самый простой способ сделать это — ввести «проверить наличие обновлений» в строке поиска в нижнем левом углу. Даже если он говорит, что система обновлена, все равно нажмите «Проверить наличие обновлений». Вы также можете нажать на «Просмотр обновлений параметров»,  вручную отметить каждое доступное обновление драйвера, а затем нажать «Загрузить и установить».  При появлении запроса перезагрузите систему.

 

Стоимость использованных ноутбуков HP при перепродаже

Если проблема не исчезнет даже после сброса настроек, не отчаивайтесь. Вы все еще можете извлечь из этого выгоду путем перепродажи. И, к счастью, большинство используемых моделей ноутбуков HP сохраняют довольно хорошую стоимость при перепродаже с течением времени, если вы не держите их слишком долго. Например, вы можете продать нам ноутбук HP через Интернет  или через платформы обратной продажи. А если у вас есть вопрос о стоимости вашего бывшего в употреблении ноутбука HP при перепродаже, мы в  Gadget Salvation на расстоянии  одного клика, поэтому не стесняйтесь  обращаться к нам  с любыми вопросами, которые могут у вас возникнуть.

 

Последние мысли

Когда ваш ноутбук HP начинает работать со сбоями, иногда решение может быть столь же простым, как выполнение сброса к заводским настройкам. Тем не менее, всегда разумно сохранить файл резервной копии на случай непредвиденных ситуаций при загрузке. Таким образом, даже если ваш накопитель выйдет из строя и сбросить его больше нельзя, ваши данные будут в безопасности и готовы к переносу на новый компьютер. А если вы решите продать ноутбук, наше руководство HP по обмену ноутбука поможет вам сориентироваться в этом процессе.



2021-07-26T13:11:43
OS Windows

Пузырьковая сортировка

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

Идея алгоритма проста: несколько раз сравнивайте соседние элементы в массиве и меняйте их местами, если они не отсортированы. Алгоритм повторяет описанный выше процесс до тех пор, пока все элементы в массиве не будут отсортированы. На каждой итерации алгоритма алгоритм сравнивает все пары соседних элементов. Смежные элементы меняются местами, если они не отсортированы.

 

Пример:

Пусть исходный массив будет [5, 4, 9, 3, 7, 6].

Первая итерация:

сравните элементы в индексах 1 и 2: 5, 4. Они не отсортированы. Поменяйте их местами. Array = [4, 5, 9, 3, 7, 6].

Сравните элементы в индексе 2 и 3: 5, 9. Они отсортированы. Не меняйте местами. Array = [4, 5, 9, 3, 7, 6].

Сравните элементы в индексе 3 и 4: 9, 3. Они не отсортированы. Поменяйте их местами. Array = [4, 5, 3, 9, 7, 6].

Сравните элементы в индексе 4 и 5: 9, 7. Они не отсортированы. Поменяйте их местами. Array = [4, 5, 3, 7, 9, 6].

Сравните элементы в индексе 5 и 6: 9, 6. Они не отсортированы. Поменяйте их местами. Array = [4, 5, 3, 7, 6, 9]

Массив после первой итерации равен [4, 5, 3, 7, 6, 9].

В таблице ниже описан полный процесс сортировки, включая другие итерации. Для краткости показаны только шаги, на которых происходит замена.

Первая итерация:

[5, 4, 9, 3, 7, 6]

[4, 5, 9, 3, 7, 6]

[4, 5, 3, 9, 7, 6]

[4, 5, 3, 7 , 9, 6]

[4, 5, 3, 7, 6, 9]

Вторая итерация:

[4, 3, 5, 7, 6, 9]

[4, 3, 5, 6, 7, 9]

Третья итерация:

[3, 4, 5, 6, 7, 9]

Исходный код: пузырьковая сортировка

def bubble_sort(arr, n):

for i in range(0, n):

for j in range(0, n-1):

# Если пара не находится в отсортированном порядке

if arr[j] > arr[j+1]:

# Поменяйте местами пары, чтобы сделать их в отсортированном порядке

arr[j], arr[j+1] = arr[j+1], arr[j]

return arr



if __name__ == "__main__":

arr = [5, 4, 9, 7, 3, 6]

n = len(arr)

arr = bubble_sort(arr, n)

print (arr)

Пояснение: Алгоритм состоит из двух циклов. Первый цикл повторяется по массиву n раз, а второй цикл n-1 раз. На каждой итерации первого цикла второй цикл сравнивает все пары соседних элементов. Если они не отсортированы, соседние элементы меняются местами, чтобы упорядочить их. Максимальное количество сравнений, необходимых для присвоения элементу его правой позиции в отсортированном порядке, равно n-1, потому что есть n-1 других элементов. Так как имеется n элементов, и каждый элемент требует максимум n-1 сравнений; массив сортируется за время O (n ^ 2). Следовательно, временная сложность наихудшего случая равна O (n ^ 2). Лучшая временная сложность в этой версии пузырьковой сортировки также составляет O (n ^ 2), потому что алгоритм не знает, что он полностью отсортирован. Следовательно, даже если он отсортирован.

 

Часть 2 (необязательно): оптимизированная пузырьковая сортировка

Вышеупомянутый алгоритм можно оптимизировать, если мы сможем остановить сравнение, когда все элементы будут отсортированы. Это можно сделать с помощью дополнительной переменной-флага, которая сообщает алгоритму, когда следует остановиться.

def optimised_bubble_sort(arr, n):

not_sorted = True

while(not_sorted):

not_sorted = False

for i in range(0, n-1):

# Если пара не находится в отсортированном порядке

if arr[i] > arr[i+1]:

# Поменяйтесь ими местами

arr[i], arr[i+1] = arr[i+1], arr[i]

# Помните, что массив не был отсортирован 

# в начале итерации

not_sorted = True

return arr



if __name__ == "__main__":

arr = [5, 4, 9, 7, 3, 6]

n = len(arr)

arr = optimised_bubble_sort(arr, n)

print (arr)

В приведенном выше алгоритме флаговая переменная not_sorted остается истинной, пока происходит обмен в итерации внутреннего цикла for. Эта оптимизированная версия пузырьковой сортировки требует одной дополнительной итерации после сортировки массива, чтобы проверить, отсортирован ли массив или нет.

Оптимальная временная сложность этого алгоритма — O (n). Это происходит, когда все элементы входного массива уже находятся в отсортированном порядке, и требуется одна итерация, чтобы проверить, находится ли массив в отсортированном порядке или нет.



2021-07-24T10:37:10
Методология программирования