計算機, 程序設計
排序在編程技術:排序“泡沫”
冒泡排序,不僅被認為是最快的方法,而且,它關閉的組織最慢的方式列表。 但是,它有它的優勢。 因此,分揀泡沫的方法 - 最,無論是自然的和邏輯的解決問題的辦法,如果你想安排在一個特定的順序的項目。 一個普通人手動,例如,它會使用它們 - 只是憑直覺。
凡做了這樣一個不尋常的名字嗎?
方法名字出現了,用在水中氣泡的比喻。 這是一個比喻。 正如小氣泡向上上升 - 因為它們的密度比流體(在這種情況下 - 水)更大,並且每個陣列元素,較小它是值越逐漸的方式向列表編號的頂部。
該算法的說明
如下進行冒泡排序:
- 第一遍:陣列號的元素採取的是兩對,並且還比較。 如果兩個人團隊第一個值的一些元素是大於第二,該方案使他們的交流場所;
- 因此, 最大數目的未命中的數組的末尾。 而所有其它元件保持,因為他們在一個混亂的方式,並需要更多的排序;
- 因此需要一個第二遍:它通過與類似於由前面的(已經描述),並具有許多比較 - 減一;
- 在通道數三個比較,比第二個更小,並且兩個,比第一。 依此類推;
- 總結,每個通道具有(通道數)比較(所有的數組中的值,特定的數)減去。
程序的更短的算法可以寫為:
- 數的數組進行檢查,只要任何兩個數字被發現,他們的第二勢必會大於第一;
- 不正確地定位在相對於所述陣列的軟件互換的元件彼此。
偽代碼基於描述的算法
最簡單的實現進行如下:
Sortirovka_Puzirkom程序;
開始
週期從nachalnii_index到konechii_index 焦耳 ;
週期對於i從nachalnii_index到konechii_index-1;
如果馬西沃[I]>馬西沃[I + 1](第一元件比第二大),則:
(變化會在值);
結束
當然,這種簡單只會加重情況:該算法越簡單,越體現所有的缺陷。 時間投資比例過大,即使是小型陣列(這裡來的相對論:時間對於外行的金額看起來很小,但實際上每一秒,甚至毫秒數程序員)。
它採取了更好的實現。 例如,考慮到值的陣列位置的交換:
Sortirovka_Puzirkom程序;
開始
sortirovka = TRUE;
循環直到sortirovka = TRUE;
sortirovka = FALSE;
週期對於i從nachalnii_index到konechii_index-1;
如果馬西沃[I]>馬西沃[I + 1](第一元件比第二大),則:
(改變元件的地方);
sortirovka = TRUE; (確定了交流已作出)。
結束。
限制
主要缺點 - 過程的持續時間。 多少時間進行 排序算法 泡沫?
前置時間從平方數的數量計算出的陣列中的 - 它的最終結果是成比例的。
如果最壞情況下的陣列被多次傳遞,因為它具有減一值的元素。 這是因為到底有只有一個元素是,這沒有什麼可比較,最後穿過陣列變得無用動作。
此外,分選一個簡單的交換,因為它被調用時,僅對於小尺寸的陣列的有效方法。 與過程的幫助大量的數據將無法正常工作:在結果可能是一個錯誤或程序故障。
尊嚴
冒泡排序是很容易理解的。 在其陣列的順序元素的研究技術大學的課程通過擺在首位。 該方法很容易實現兩個Delphi編程語言(L(DELPHI),以及C / C ++(C / C加正),定位算法以正確的順序,並在一個非常簡單的值 帕斯卡(帕斯卡)。 冒泡排序是理想的初學者。
由於算法的缺點是沒有課外目的。
視覺排序原則
陣列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
以帕斯卡冒泡排序示例
例如:
常量kol_mas = 10;
VAR馬西沃:陣列[1..kol_mas]整數;
A,B,k為整數;
開始
writeln(“輸入”,kol_mas, “數組的元素');
為:= 1到kol_mas做readln(馬西沃[A ]);
為:= 1到kol_mas-1做開始
對於b:= A + 1至kol_mas不開始
如果馬西沃並[a]>馬西沃[ B]然後開始
K:=馬西沃[A]; 馬西沃[A]:=馬西沃[ B]; 馬西沃並[b]:= K;
結束;
結束;
結束;
writeln('後排序');
為:= 1到kol_mas做writeln(馬西沃[A ]);
結束。
實施例氣泡在C語言分選(C)
例如:
的#include
的#include
INT主(INT的argc,字符* argv的[])
{
INT馬西沃[8] = {36,697,73,82,68,12,183,88},I,FF;
為(;;){
FF = 0;
對於(I = 7; I> 0; I - ){
如果(馬西沃[I] <馬西沃 [校正1]){
交換(馬西沃[I],馬西沃 [校正1]);
FF ++;
}
}
如果(FF == 0)斷裂;
}
的getch(); //顯示延遲
返回0;
}。
Similar articles
Trending Now