日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

算法—1,简单说说最常见的冒泡排序(Bubble Sort)

發布時間:2024/9/30 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 算法—1,简单说说最常见的冒泡排序(Bubble Sort) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一,引入。

冒泡排序可以說是學習算法知識的時候入門的一個算法了,可是自從我當了面試官之后,來面試的人卻連冒泡寫不出來,實在讓我大跌眼鏡,恰好最近一段時間想再深入學習一下算法,就單開一個分類,算法,來講講面試中經常遇到的一些算法題。

二,簡介。

冒泡排序?Bubble Sort,顧名思義,就是像水里冒泡泡一樣將不規則的一堆數字進行排序的算法,這個算法的名字由來是因為越大的元素會經由交換慢慢“浮”到數列的頂端。

三,原理。

冒泡排序法的原理比較簡單,簡單來說就是經過相鄰數字的比較,將大的數或小的數向一側靠攏,直至排序結束。

實際過程中分為以下幾個步驟:

1 比較相鄰的元素。如果第一個比第二個大(小),就交換他們兩個。

2 對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最后一對。在這一點,最后的元素應該會是最大的數(如果第一步是小,那么這里的數就是最小的數)。

3 針對所有的元素重復以上的步驟,除了最后一個(第一步是最后一個,到第二次就是到倒數第二個,依次遞減)。

4 持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。

四,編碼實現

public static void sort(int[] arrs) {if (arrs == null || arrs.length==0 ) {return;//邊界值判斷,有的面試官很看重。}int len = arrs.length;for (int i = 0; i < len; i++) {for (int j = 0; j < len - i-1; j++) {if (arrs[j] > arrs[j + 1]) { //這里的大于號可以用小于號替換,替換之后就是把小的數往最后“冒”int temp = arrs[j];arrs[j] = arrs[j + 1];arrs[j + 1] = temp; //int型的交換算法可以使用位操作符進行運算,也可以作為自己的一個亮點來展示。這里交換的步驟也可以進行抽取。作為公共方法。}}}}上面就是一個簡單的冒泡法排序了,可以看到因為冒泡排序是兩兩相比直到第一個最小/大的數排到 最后,所以i 和 j一定是從0開始的,因為每經過一個 i ,后面 i 個數字已經有序,所以 j 需要滿足? j < len - i-1

當然,用 j <len -1也沒有沒問題,只是差一點點適當優化。

這里,也可以看到是兩層for循環,所以時間復雜度自然就是O(n2)

五,舉一反三

如果冒泡法介紹到上面就完了,那么和其他人的冒泡排序法介紹也大同小異,但是最后我還是想要舉一反三一下,在前面大家都知道冒泡法是把最大或最小的數往后面冒泡,那么如果我們反其道而行之呢?將最大/小的數往前“冒”,那么寫法是什么樣的呢?

public static void sort(int[] arrs) {if (arrs == null || arrs.length==0 ) {return;}int len = arrs.length;for (int i = 0; i <len; i++) { // i的取值也可以從大到小,不影響排序的比較for (int j = len-1; j>i; j--) { // j 如果從后面往前面比較,則比較好理解,每次都從最后一個數字開始往前兩兩比較,只需要比到第i個就可以了,這里為什么大家可以自己想一想。這里和上面一樣,也可以寫成j>0,只不過不算是最好的冒泡。if (arrs[j] <arrs[j - 1]) { //后續就是j 和 j-1比較。int temp = arrs[j];arrs[j] = arrs[j - 1];arrs[j - 1] = temp;}}}}

六,總結

冒泡還是比較基礎的一個算法,如果在面試中不會還是會丟很多印象分的,畢竟會留下基礎不好的感覺,所以希望大家看完這篇博客能有所收獲~




總結

以上是生活随笔為你收集整理的算法—1,简单说说最常见的冒泡排序(Bubble Sort)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。