氣泡排序可以說是排序演算法中最為簡單的一種。
核心思想: 相鄰元素做比較,兩兩比較小靠前。
1.將相鄰的兩個元素進行比較,比較完後,按照元素大小進行移位,小的移動到前面,大的移動到後面。
2.每一輪比較完後,「最大的元素」 將被移位到最後。在下一輪比較的時候,這個 「最大的元素」 就不需要再參與比較了。
3.重複進行上述步驟,經過 n - 1 輪比較之後,排序完成。(n:代表的是要比較的元素個數)
原數 9, 7, 8, 6, 2
第一輪:
9 7比較 7 9 變成 7 9 8 6 2
9 8比較 8 9 變成 7 8 9 6 2
9 6比較6 9 變成 7 8 6 9 2
9 2比較 2 9 變成 7 8 6 2 9
第二輪:
7 6 2 8 9
第三輪:
6 2 7 8 9
第四輪:
2 6 7 8 9
int
arr =
;for
(int i =
0; i < arr.length -
1; i++)}
}
輸出[2, 6, 7, 8, 9]
1.第一次比較的時候,先將 「第乙個元素」 假定為最小元素值。
2.然後將第乙個元素依次和後面的所有元素進行比較大小,如果後面的元素比第乙個元素小,則進行交換。
3.每一輪比較完後,「最小的元素」 將被移位到 「第乙個元素位置」。在下一輪比較的時候,這個 「最小的元素」 就不需要再參與比較了。
4.重複的進行上面步驟,經過 n - 1 輪比較之後,排序完成。(n:代表的是要比較的元素個數)
原數:9, 7, 8, 6, 2
第一輪: 2 9 8 6 7
9, 7 變成 7 9 8 6 2
7 8 變成 7 9 8 6 2
7 6 變成7 9 8 6 2
7 2變成 2 9 8 6 7
9 8 6 7第二輪: 6987
9 8 7 第三輪 798
98 第四輪: 89
int
arr =
;for
(int i =
0; i < arr.length-
1; i++)}
}
輸出[2, 6, 7, 8, 9]
1.首先將第乙個元素就看作是乙個已經排序好的數列,後面的其他元素則看作未排序數列。
2.然後將第二個元素在已經排序好的數列中,做插入動作。即在已經排序好的數列中,從後向前依次查詢符合公升序規律的位置,並插入到該位置。
int
arr =
;for
(int i =
0; i < arr.length -
1; i++)}
system.out.
println
(arrays.
tostring
(arr));
}
排序演算法入門 快速排序
涵義 雖說快速排序是由氣泡排序改進而來,二者都是通過元素交換達到排序效果,但是在個人看來快速排序思想和冒泡完全不同。時間複雜度 直接插入排序最好的時間複雜度為o nlog2n 直接插入排序的最壞時間複雜度為o n2 因此直接插入排序總的平均時間複雜度為o nlog2n 注 不穩定 快速排序之所以比冒...
排序演算法入門 選擇排序
選擇排序 選擇排序也是利用了 擋板法 這個經典思想。擋板左邊是已排序區間,右邊是未排序區間,那麼每次的 選擇 是去找右邊未排序區間的最小值,找到之後和擋板後面的第乙個值換一下,然後再把擋板往右移動一位,保證排好序的這些元素在擋板的左邊。比如例子 我們用乙個擋板來分隔陣列是否排好序,用指標 j 來尋找...
演算法入門之排序
最初接觸演算法,最先見到的想必就是排序了,各種各樣的排序演算法層出不窮。下面是總結的一些常見的排序 氣泡排序就像它的名字一樣,重複的遍歷元素,每次只比較相鄰的兩個元素,進行相應的交換即可,下面是圖示 自己畫的,比較簡單 看完這個圖示,是不是腦海中大致有了 的思路呢?我們一起來寫一下看看吧 我們假設有...