排序演算法入門

2021-10-25 15:32:50 字數 1525 閱讀 2604

氣泡排序可以說是排序演算法中最為簡單的一種。

核心思想: 相鄰元素做比較,兩兩比較小靠前。

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 來尋找...

演算法入門之排序

最初接觸演算法,最先見到的想必就是排序了,各種各樣的排序演算法層出不窮。下面是總結的一些常見的排序 氣泡排序就像它的名字一樣,重複的遍歷元素,每次只比較相鄰的兩個元素,進行相應的交換即可,下面是圖示 自己畫的,比較簡單 看完這個圖示,是不是腦海中大致有了 的思路呢?我們一起來寫一下看看吧 我們假設有...