for迴圈優化 面試官 可以優化一下氣泡排序嘛?

2021-10-11 08:38:11 字數 1397 閱讀 4099

十大排序演算法中,氣泡排序應該算得上是最簡單的一種排序方法了。之前只知道最簡單的兩個for迴圈做冒泡,其實在for迴圈的同時,還可以通過一些小細節來實現對演算法的優化。首先我們可以通過**來了解其冒泡原理

通過**可以清晰的看見冒泡的原理:前後比較,然後移位。下面我們進行實戰,對下列陣列進行排序

int arrs = ;

static int bubblesort1(int arr)                sum++;            }        }        system.out.println(sum);        return arr;    }123456789101112131415
這裡我們通過sum來計算一共比較了多少次

結果如下:

28[1, 2, 3, 4, 5, 6, 7, 9]

相比第一種方式,我們發現其實經過某些排序後,陣列已經變得有序,所以後續的排序是沒有必要的,不用再繼續下去,這裡我們新增flag 作為標記

static int bubblesort2(int arr)                sum++;            }            if(flag==0)        }        system.out.println(sum);        return arr;    }123456789101112131415161718192021
得到結果

18

[1, 2, 3, 4, 5, 6, 7, 9]

這個flag的標記是優化第二個for迴圈

標記最後一次交換的位置pos,後邊沒有交換,必然是有序的,然後下一次排序從第乙個比較到上次記錄的位置結束即可

public static int bubblesort3(int arr)                sum++;            }            if(flag==0)            k=pos;        }        system.out.println(sum);        return arr;    }12345678910111213141516171819202122232425
結果:

15

[1, 2, 3, 4, 5, 6, 7, 9]

目前來看這個氣泡排序已經優化了很多,但是最優解還有一種,雙向排序也就是常說的 「 雙指標排序法」 後面單獨出記錄一篇

MySQL的limit優化,可別讓面試官問住了!

limit關鍵字是mysql進行分頁的關鍵字 使用的用法為 select from tablename limit 0,20 limit是通過從表的第一行開始遍歷到指定位置的方法來實現尋找分頁資料的,這樣在資料量小的時候是非常有效的,但是碰到資料量非常大的情況時,會遇到效率不佳的問題 比如 sele...

面試時,可以問面試官問題總結

明天又要去參加一次面試。每次面試的時候,面試官都會在最後給面試者一些時間,來問問題。這是個非常好的機會,能按照自己的思路,來了解職位 技術 企業文化 福利待遇 企業狀況和前景等情況,以彌補前面面試過程中沒有了解到的情況。但較早以前面試準備不太充分,雖然也能地問上一些問題,但掛一漏萬,每次回來後,總覺...

如何自我介紹可以吸引面試官?

如何自我介紹可以吸引面試官?很多面試官一般都會讓面試者先來個自我介紹,先了解一下是什麼樣的人,有哪些優勢,然後是工作經驗,可想而知 自我介紹是多麼重要。面試者在自我介紹的時候,一定要冷靜下來,不要太過緊張,提前做好充分的準備工作,防止面試的時候太過於匆忙。面試自我介紹既是面試中必備環節,也是求職者最...