原文連結
小史是一個應屆生,雖然學的是電子專業,但是自己業餘時間看了很多網際網路與程式設計方面的書,一心想進BAT網際網路公司。

今天他去了一家網際網路小巨頭公司面試了。
沒想到面試并不像想象中的順利。
【遇見呂老師】
【面試現場】
小史:原始資料,a2和a4的位置都是3。對于穩定排序來說,排序後的序列,a2一定還是在a4前面。但是對于非穩定排序來說,就不一定了,可能排完序之後,a4反而在a2的前面了。
題目:既然最後都是有序序列,為什麼還要分穩定和非穩定的排序呢?
半分鐘過去了。
【請教大神】
呂老師:筆試主要問是什麼,而面試主要問為什麼。
【呂老師的課】
呂老師一上課就把問題抛了出來。
話音剛落,蛋哥就站了起來。
蛋哥:咱們每次考試完成後,都會按照分數進行排序。分高的自然就是第一名。分數相同的同學怎麼辦呢?那就是按照上次的分數來分高低。上次分高的排在前面。
蛋哥:這個時候就應該用穩定排序,在上次排好序的序列上,再針對這次的分數進行排序。穩定排序的結果能保證這次相同分數的人,上次分高的在前面。
蛋哥:再比如我們班的同學,已經按照學号排好序了。現在要按照身高排序。如果是穩定排序排好之後,身高相同的同學,還是按照學号順序的。
呂老師:沒錯,其實就是有兩個排序關鍵字的時候,穩定排序可以讓第一個關鍵字排序的結果服務于第二個關鍵字排序中數值相等的那些數。
小史聽完後,覺得很慚愧,其實這些場景自己也遇到過,早該想到的。
【課後】
課後小史又找到呂老師。
**
呂老師:你看的東西很多,是你學到了很多知識。但是這些知識之間的關聯,需要你進行深入思考才能得到的。找到知識之間的聯系,找到知識和實際場景之間的聯系,多想想為什麼,才能做到融會貫通。
來源 | 五分鐘學算法
作者 | 程式員小吳