選自《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 依次類推最後得到...
排序演算法之氣泡排序
參考 氣泡排序演算法的運作如下 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。若...
排序演算法之氣泡排序
對於大多數學計算機的人來說,氣泡排序應該都是接觸的第一種排序方式,氣泡排序的排序思想是比較簡單的,它的演算法的是 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了...