本篇是《決勝經典算法》系列文章的第一篇,做爲開篇,先向各位讀者說明一下本系列的幾個「原則」。算法
第一部分,咱們來聊一聊排序。單說排序算法,有近十種。不一樣的算法對應不一樣的應用場景(有關不一樣排序算法的性能比較,將在完整介紹完10種排序算法後統一說明)。
閒話少說,接下來咱們就來看第一種排序算法,也是本系列中最爲簡單的一種算法——冒泡排序法。編程
現有以下數字:
3,44,38,5,47,15,36,26,27,2,46,4,19,50,48
一共15個數字,請將其從小到大依次排列。bash
所謂「冒泡排序」,能夠從名稱上理解。「冒泡」實際上就是指把值更大的元素放到數列的後面來(若是是從大到小排列,則反之),好像是這個元素「浮」了過來。咱們先來大體地看下面的動圖,感覺一下冒泡排序的運行過程:編程語言
怎麼樣?有沒有感受到一個個值更大的元素一點點地「冒泡」到了右端?
是否是有點眼花繚亂?彆着急,下面咱們逐步拆解。性能
咱們來看一下冒泡排序的詳細步驟:spa
有了詳細步驟,咱們就可使用僞代碼實現了,參考下面的僞代碼:3d
BubbleSort(input ele[],input length)
for i <- 1 to length step 1
for j <- i+1 to 0 step -1
if ele[j] < ele [j - 1]
swap (ele[j],ele[j - 1])
end if
end
end
複製代碼
下面啓動IDE,使用Java編程語言實現它吧!code
public void bubbleSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
for (int j = 0; j < arr.length - i; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
複製代碼
上述代碼中,參數arr表示未經排序的數列。該方法運行結束後,arr將變爲從小到大排序的數列。cdn
思考題答案將在下篇連載中公佈,你們加油哦!blog