Различия
Показаны различия между двумя версиями страницы.
— | puzyrkovaja_sortirovka [2025/07/06 12:39] (текущий) – создано - внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== Пузырьковая сортировка ====== | ||
+ | ~~Title: Сортировка пузырьком С++ ~~ | ||
+ | {{htmlmetatags> | ||
+ | metatag-description=(Самый известный алгоритм сортировки — пузырьковая сортировка. Алгоритм пузырьковой сортировки - это простой в реализации алгоритм для сортировки массивов.) | ||
+ | }} | ||
+ | |||
+ | Сортировка простыми обменами, | ||
+ | <note important> | ||
+ | |||
+ | Суть алгоритма заключается в повторяющихся проходах по сортируемому массиву. За каждый проход элементы последовательно сравниваются попарно и, если порядок в паре неверный, | ||
+ | |||
+ | Для реализации расположим массив сверху вниз, от нулевого элемента - к последнему. После нулевого прохода по массиву " | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Делаем проходы по все уменьшающейся нижней части массива до тех пор, пока в ней не останется только один элемент. На этом сортировка заканчивается, | ||
+ | |||
+ | {{: | ||
+ | |||
+ | [[algoritm]] | ||
+ | ====== Пример кода PHP ====== | ||
+ | Пример кода на языке [[PHP]]. | ||
+ | < | ||
+ | for ($i=(count($A)-1); | ||
+ | for ($j=0; | ||
+ | if ($A[]> | ||
+ | $tmp = $A[$j]; | ||
+ | $A[$j] = $A[$j+1]; | ||
+ | $A[$j+1] = $tmp; | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | ====== Пример кода C++ ====== | ||
+ | Пример кода на языке C++. | ||
+ | < | ||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | using namespace std; | ||
+ | template <class T> | ||
+ | void bubbleSort(T a[], long size){ | ||
+ | long i, j; | ||
+ | T x; | ||
+ | for(i=0; | ||
+ | for(j=size-1; | ||
+ | if(a[j-1]> | ||
+ | x=a[j-1]; | ||
+ | a[j-1]=a[j]; | ||
+ | a[j]=x; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | void main(){ | ||
+ | srand(time(NULL)); | ||
+ | const long SIZE=10; | ||
+ | int ar[SIZE]; | ||
+ | |||
+ | // до сортировки | ||
+ | for(int i=0; | ||
+ | ar[i]=rand()%100; | ||
+ | cout<< | ||
+ | } | ||
+ | cout<<" | ||
+ | bubbleSort(ar, | ||
+ | |||
+ | // после сортировки | ||
+ | for(int i=0; | ||
+ | cout<< | ||
+ | } | ||
+ | cout<<" | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ====== Основные принципы метода ====== | ||
+ | |||
+ | Среднее число сравнений и обменов имеют квадратичный порядок роста, отсюда можно заключить, | ||
+ | |||
+ | Рассмотрим ситуацию, | ||
+ | |||
+ | Процесс оптимизации можно продолжить, | ||
+ | |||
+ | Качественно другое улучшение алгоритма можно получить из следующего наблюдения. Хотя " | ||
+ | |||
+ | Чтобы избежать подобного эффекта, | ||
+ | |||
+ | < | ||
+ | #include < | ||
+ | #include < | ||
+ | #include < | ||
+ | using namespace std; | ||
+ | template <class T> | ||
+ | void shakerSort(T a[], long size) { | ||
+ | long j, k=size-1; | ||
+ | long lb=1, ub=size-1; // границы неотсортированной части массива | ||
+ | T x; | ||
+ | |||
+ | do{ | ||
+ | // проход снизу вверх | ||
+ | for(j=ub; | ||
+ | if(a[j-1]> | ||
+ | x=a[j-1]; | ||
+ | a[j-1]=a[j]; | ||
+ | a[j]=x; | ||
+ | k=j; | ||
+ | } | ||
+ | } | ||
+ | lb = k+1; | ||
+ | |||
+ | // проход сверху вниз | ||
+ | for(j=1; | ||
+ | if(a[j-1]> | ||
+ | x=a[j-1]; | ||
+ | a[j-1]=a[j]; | ||
+ | a[j]=x; | ||
+ | k=j; | ||
+ | } | ||
+ | } | ||
+ | ub=k-1; | ||
+ | |||
+ | }while (lb<ub); | ||
+ | } | ||
+ | |||
+ | void main(){ | ||
+ | srand(time(NULL)); | ||
+ | const long SIZE=10; | ||
+ | int ar[SIZE]; | ||
+ | |||
+ | // до сортировки | ||
+ | for(int i=0; | ||
+ | ar[i]=rand()%100; | ||
+ | cout<< | ||
+ | } | ||
+ | cout<<" | ||
+ | shakerSort(ar, | ||
+ | |||
+ | // после сортировки | ||
+ | for(int i=0; | ||
+ | cout<< | ||
+ | } | ||
+ | cout<<" | ||
+ | } | ||
+ | </ | ||
+ | Таким образом, |
📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.
📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Nginx простые примеры конфигурации
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах
7 Самых Популярных Обзоров
- Хостинг для Python-скриптов и приложений
- ТОП 4 лучших антидетект браузеров (Бесплатные & Платные)
- Подборка купонов (промокоды) на хостинг, антидетект браузеры
- Обзор THE.Hosting (PQ Hosting): надежный хостинг с профессиональной поддержкой
- Хостинг в России
- Хостинг в Европе
- Обзор браузера Dolphin {anty} для мультиаккаунтинга