計算機程序設計

排序在編程技術:排序“泡沫”

冒泡排序,不僅被認為是最快的方法,而且,它關閉的組織最慢的方式列表。 但是,它有它的優勢。 因此,分揀泡沫的方法 - 最,無論是自然的和邏輯的解決問題的辦法,如果你想安排在一個特定的順序的項目。 一個普通人手動,例如,它會使用它們 - 只是憑直覺。

凡做了這樣一個不尋常的名字嗎?

方法名字出現了,用在水中氣泡的比喻。 這是一個比喻。 正如小氣泡向上上升 - 因為它們的密度比流體(在這種情況下 - 水)更大,並且每個陣列元素,較小它是值越逐漸的方式向列表編號的頂部。

該算法的說明

如下進行冒泡排序:

  • 第一遍:陣列號的元素採取的是兩對,並且還比較。 如果兩個人團隊第一個值的一些元素是大於第二,該方案使他們的交流場所;
  • 因此, 最大數目的未命中的數組的末尾。 而所有其它元件保持,因為他們在一個混亂的方式,並需要更多的排序;
  • 因此需要一個第二遍:它通過與類似於由前面的(已經描述),並具有許多比較 - 減一;
  • 在通道數三個比較,比第二個更小,並且兩個,比第一。 依此類推;
  • 總結,每個通道具有(通道數)比較(所有的數組中的值,特定的數)減去。

程序的更短的算法可以寫為:

  • 數的數組進行檢查,只要任何兩個數字被發現,他們的第二勢必會大於第一;
  • 不正確地定位在相對於所述陣列的軟件互換的元件彼此。

偽代碼基於描述的算法

最簡單的實現進行如下:

Sortirovka_Puzirkom程序;

開始

週期從nachalnii_indexkonechii_index 焦耳 ;

週期對於inachalnii_indexkonechii_index-1;

如果馬西沃[I]>馬西沃[I + 1](第一元件比第二大),則:

(變化會在值);

結束

當然,這種簡單只會加重情況:該算法越簡單,越體現所有的缺陷。 時間投資比例過大,即使是小型陣列(這裡來的相對論:時間對於外行的金額看起來很小,但實際上每一秒,甚至毫秒數程序員)。

它採取了更好的實現。 例如,考慮到值的陣列位置的交換:

Sortirovka_Puzirkom程序;

開始

sortirovka = TRUE;

循環直到sortirovka = TRUE;

sortirovka = FALSE;

週期對於inachalnii_indexkonechii_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

 

 

 

 

Newest

Copyright © 2018 zhtw.birmiss.com. Theme powered by WordPress.