氣泡排序之逐步講解

2021-06-29 08:27:50 字數 959 閱讀 1939

for (int i=0; ia[j])		}

}

分析該程式,其中i表示的是遍歷整個陣列的個數,i=0:n-2,一共n-1次。j=1:n-i-1;該程式內部迴圈執行的最後一次,j=1,j<2,滿足條件。

氣泡排序相當於一次游泳的過程,第一次遍歷遊到終點,第二次是終點-1。最後一次是只遊一步。

問題:能否把n-i整體作為乙個變數呢?

int k = n;

while(k >0)

} k--;

}

int k =n;

bool flag = true;

while (flag)

}k--;

}

可能這樣寫,不容易看懂,那如果換成for迴圈呢,如下所示:

其實,也就是現在的游泳過程,並不是每趟都遊,而是根據flag來進行判斷。

for (bool flag=true,int k=n; flag == true; k--)

}k--;

}

int k;

int flag = n;

while (flag>0)

}}

該方法相當於把上一次得到的界限,在該趟迴圈的起始之時,將界限進行替換。精華在於少了一步。

等價於:

int k = n;

int flag = n;

while (flag>0)

}k = flag;

}

其中k表示的是每趟游泳的endline(不能到達,實際到達位置為k-1)。無論flag為bool型別還是int型別,都要注意每行初始值為0,如果這趟沒有發生交換,則就不會進行下趟活動。

氣泡排序逐步詳解相關筆記(一)

1.氣泡排序實際上是陣列中相鄰的兩個元素互相比較,滿足條件之後就會互換位置 需要雙重for迴圈 比較的輪數 預設是陣列元素的個數減1 每輪比較的次數 預設是陣列元素的個數減1 滿足了相鄰的兩個元素互相比較的條件之後,就會互換這兩個元素的位置,從而達到大的值或最小的值不斷的往前面放或者往後面放的目的 ...

彙編 實現氣泡排序 講解

有乙個首位址為a的n字陣列,編寫程式採用氣泡排序使該陣列中的數按照從大到小的次序整序。資料儲存在a的陣列中 即記憶體中 我們需要利用氣泡排序實現從大到小排序。description data segment use16 a dw 8,16 41,22 50n equ a 2 data ends de...

快速排序 氣泡排序 交換類排序 講解

每一趟排序選擇當前序列中的第乙個關鍵字 通常是第乙個 作為樞紐,而快速排序要做的就是把比樞紐小的關鍵字交換到樞紐前面,比樞紐大的關鍵字交換到樞紐後面。本趟排序完後會生成新的子串行,而子串行會成為下一趟排序的初始序列。通過例子來講明快速排序的規則 總結而言就是 首為樞紐,左i右j,先j後i,j從右向左...