菜鳥對陣列排序演算法之氣泡排序的學習

2021-09-29 04:17:27 字數 2413 閱讀 7311

選自《c#從入門到精通》,記錄本人的學習過程。

氣泡排序方法以簡潔的思想與實現方法而備受青睞,是廣大初學者最先接觸的乙個排序演算法。這種方法排序陣列元素的過程總是小數往前放,大數往後放,類似水中氣泡往上公升的動作,所以稱做氣泡排序。

1.基本思想

對比相鄰的元素值,如果滿足條件就交換元素值,把較小的元素移動到陣列前面,把大的元素移動到陣列後面(也就是交換兩個元素的位置),這樣較小的元素就像氣泡一樣從底部上公升到頂部。

2.演算法示例

冒泡演算法由雙層迴圈實現,其中外層迴圈用於控制排序輪數,一般是要排序的陣列長度減1次,因為最後一次迴圈只剩下乙個陣列元素,不需要對比,同時陣列已經完成排序了。而內迴圈主要用於對比陣列中每個臨近元素的大小,以確定是否交換位置,對比和交換次數以排序輪數而減少。

3.演算法實現

int

arr =

newint

;//定義乙個一維陣列,並賦值

//定義兩個int型別的變數,分別用來表示陣列下標和儲存新的陣列元素

int j, temp;

for(

int i =

0; i < arr.length -

1; i++

)//根據陣列下標的值遍歷陣列元素

else

if(j < arr.length -1)

//判斷是否執行到最後乙個元素

}foreach

(int n in arr)

//迴圈遍歷排序後的陣列元素並輸出

console.

write

(n +

" ")

; console.

writeline()

;

4.今天,我終於弄明白了這個最簡單的排序方式,我真的沒什麼天賦在**上。。。(我好像就沒什麼天賦…)

5.在你的vs裡新建控制台應用程式,名字不太重要,你能記住就好。**奉上

//數字不重要,隨便打幾個

int[

] arr =

;//temp的作用是交換我們比較過程中的兩個數字

int temp =0;

//雙層for迴圈

for(

int i =

0; i < arr.length; i++

)//獲取到arr裡的數字個數}}

console.

writeline

("排序後的陣列為:");

//最後再將我們排序後的數字輸出

foreach

(int i in arr)

//可以暫停程式不讓它執行後一閃而過

console.

readkey();}}

如果用我的**的話,你將得到的是:

沒錯,它是由大到小排列的,如果需要由小到大的話,我們需要在if判斷裡修改一下條件。

數字的初始順序其實也決定著電腦的排序次數,它體現在我們執行該程式到產生結果的耗時,**還很不嚴謹,但這就是我目前的水平了,僅供參考,謝謝。

(@^@)

如果和我一開始一樣連雙層for迴圈的執行順序都不知道的話,應該找一篇大神的講解看看,時間有點久,只記得我找的那篇部落格講的很好,但是實在不想再去翻了。執行順序這個鏈結裡也有的,講的還不錯也貼出來吧。c語言中文網裡看到的,感覺還不錯,分享在這裡。

class

program

console.

writeline()

;}console.

readkey();}}

上述的冒牌排序只能實現對數字的排序,這段時間學習了委託,泛型,居然看到了泛型的氣泡排序,在這裡分享給大家。

class

sort}}

}}

在main函式中

可以看到字母也已經排序好了。

這段**是我在網上找的,大家可以看一看。

使用冒泡法對陣列排序

一 冒泡法介紹 冒泡法,是計算機程式設計排序中最簡單快捷的方法。看這幾個數 5 4 3 2 1 上面這5個數字我們把它按照由小到大的順序排列,從前往後相臨兩位比較大小,如果前一位比後一位大就把它倆 換位,5比4大就把5和4換位,得到45321 5又比3大 5和3換位 得到43521 依次類推最後得到...

排序演算法之氣泡排序

參考 氣泡排序演算法的運作如下 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。若...

排序演算法之氣泡排序

對於大多數學計算機的人來說,氣泡排序應該都是接觸的第一種排序方式,氣泡排序的排序思想是比較簡單的,它的演算法的是 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了...