Сорта мехурића не само да се не сматра највишебрза метода, штавише, затвара листу најспоријих метода наручивања. Међутим, то има и својих предности. Дакле, сортирање методом мехурића је најлогичније и најприродније решење проблема ако треба да распоредите елементе у одређеном редоследу. На пример, обична особа ће је користити ручно - само интуицијом.
Назив методе измишљен је аналогијом самехурићи ваздуха у води. Ово је метафора. Баш као што се мали мехурићи ваздуха подижу нагоре - на крају крајева, њихова густина је већа од било које течности (у овом случају воде), тако је сваки елемент низа, што је мањи у вредности, то се више постепено пробија на почетак листе бројева.
Сортирање мехурића врши се на следећи начин:
Још краћи, алгоритам будућег програма може се написати на следећи начин:
Најједноставнија примена је следећа:
Процедура Сортировка_Пузирком;
Почетак
циклус за ј од нацхалнии_индек пре него што конецхии_индек;
циклус за и од нацхалнии_индек пре него што конецхии_индек-1;
ако масив [и]> масив [и + 1] (први елемент је већи од другог), затим:
(промените вредности на местима);
крај
Наравно, овде једноставност само погоршаваситуација: што је алгоритам једноставнији, у њему се више појављују сви недостаци. Потрошња времена је превисока чак и за мали низ (овде на сцену ступа релативност: за лаике количина времена може изгледати мало, али у послу програмера свака секунда или чак милисекунда су битне).
Била је потребна боља примена. На пример, узимајући у обзир размену вредности у низу на местима:
Процедура Сортировка_Пузирком;
Почетак
сортировка = тачно;
циклом ћао сортировка = тачно;
сортировка = нетачно;
циклус за и од нацхалнии_индек пре него што конецхии_индек-1;
ако масив [и]> масив [и + 1] (први елемент је већи од другог), затим:
(замените елементе на местима);
сортировка = тачно; (назначено да је размена извршена).
Крај.
Главни недостатак је трајање процеса. Колико траје алгоритам сортирања облачића?
Време извршавања израчунава се из квадрата броја бројева у низу - крајњи резултат је сразмеран њему.
У најгорем случају, низ ће бити пређенонолико пута колико има елемената умањених за једну вредност. То је зато што на крају остаје само један елемент са чиме се ништа не може упоредити, а последњи пролазак кроз низ постаје бескорисна акција.
Поред тога, метод сортирања једноставнимразмене, како се још назива, само за мале низове. Уз његову помоћ неће бити могуће обрадити велике количине података: резултат ће бити или грешке или квар програма.
Сортирање мехурића је врло лако за разумевање.У наставним плановима техничких универзитета, у изучавању уређења елемената низа, прво се полаже. Метода је једноставна за имплементацију у програмском језику Делпхи (Д (Делпхи) и Ц / Ц ++ (Ц / Ц плус плус), невероватно једноставан алгоритам за распоређивање вредности у правилном редоследу и у Пасцал-у. Буббле сорт је идеалан за почетнике.
Због недостатака, алгоритам се не користи у ваннаставне сврхе.
Почетни приказ низа 8 22 4 74 44 37 1 7
Корак 1 8 22 4 74 44 37 1 7
8 22 4 74 44 1 37 7
8 22 4 74 1 44 37 7
8 22 4 1 74 44 37 7
8 22 1 4 74 44 37 7
8 1 22 4 74 44 37 7
1 8 22 4 74 44 37 7
Корак 2 1 8 22 4 74 44 7 37
1 8 22 4 74 7 44 37
1 8 22 4 7 74 44 37
1 8 22 4 7 74 44 37
1 8 4 22 7 74 44 37
1 4 8 22 7 74 44 37
Корак 3 1 4 8 22 7 74 37 44
1 4 8 22 7 37 74 44
1 4 8 22 7 37 74 44
1 4 8 7 22 37 74 44
1 4 7 8 22 37 74 44
Корак 4 1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
Корак 5 1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
Корак 6 1 4 7 8 22 37 44 74
1 4 7 8 22 37 44 74
Корак 7 1 4 7 8 22 37 44 74
Пример:
цонст кол_мас = 10;
вар массив: низ [1..кол_мас] целог броја;
а, б, к: цео број;
почети
врителн ("инпут", кол_мас, "елементи низа");
за а: = 1 до кол_мас до реадлн (массив [а]);
за: = 1 до кол_мас-1 почињу
за б: = а + 1 до кол_мас почиње
ако массив [а]> массив [б] онда започните
к: = масив [а]; масив [а]: = масив [б]; масив [б]: = к;
крај;
крај;
крај;
врителн ("након сортирања");
за а: = 1 до кол_мас до врителн (массив [а]);
крај.
Пример:
#инцлуде
#инцлуде
инт маин (инт аргц, цхар * аргв [])
{
инт массив [8] = {36, 697, 73, 82, 68, 12, 183, 88}, и, фф;
за (;;) {
фф = 0;
за (и = 7; и> 0; и -) {
иф (массив [и] <массив [и-1]) {
свап (массив [и], массив [и-1]);
фф ++;
}
}
иф (фф == 0) бреак;
}
гетцх (); // кашњење екрана
ретурн 0;
}.