1. 程式人生 > >【面試現場】為什麼要分穩定排序和非穩定排序?

【面試現場】為什麼要分穩定排序和非穩定排序?

點選上方“程式人生”,選擇“置頂公眾號”

第一時間關注程式猿(媛)身邊的故事

640?wx_fmt=jpeg

作者

channingbreeze

如需轉載,請聯絡原作者。

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

640?wx_fmt=jpeg

今天他去了一家網際網路小巨頭公司面試了。

沒想到面試並不像想象中的順利。

640?wx_fmt=jpeg

【遇見呂老師】

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

【面試現場】

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

小史:原始資料,a2和a4的位置都是3。對於穩定排序來說,排序後的序列,a2一定還是在a4前面。但是對於非穩定排序來說,就不一定了,可能排完序之後,a4反而在a2的前面了。

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

題目:既然最後都是有序序列,為什麼還要分穩定和非穩定的排序呢?

640?wx_fmt=jpeg

半分鐘過去了。

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

【請教大神】

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

呂老師:筆試主要問是什麼,而面試主要問為什麼。

640?wx_fmt=jpeg

640?wx_fmt=jpeg

【呂老師的課】

呂老師一上課就把問題拋了出來。

640?wx_fmt=jpeg

話音剛落,蛋哥就站了起來。

640?wx_fmt=jpeg

蛋哥:咱們每次考試完成後,都會按照分數進行排序。分高的自然就是第一名。分數相同的同學怎麼辦呢?那就是按照上次的分數來分高低。上次分高的排在前面。

640?wx_fmt=jpeg

蛋哥:這個時候就應該用穩定排序,在上次排好序的序列上,再針對這次的分數進行排序。穩定排序的結果能保證這次相同分數的人,上次分高的在前面。

640?wx_fmt=jpeg

蛋哥:再比如我們班的同學,已經按照學號排好序了。現在要按照身高排序。如果是穩定排序排好之後,身高相同的同學,還是按照學號順序的。

640?wx_fmt=jpeg

呂老師:沒錯,其實就是有兩個排序關鍵字的時候,穩定排序可以讓第一個關鍵字排序的結果服務於第二個關鍵字排序中數值相等的那些數。

小史聽完後,覺得很慚愧,其實這些場景自己也遇到過,早該想到的。

【課後】

課後小史又找到呂老師。

640?wx_fmt=jpeg

640?wx_fmt=jpeg

呂老師:你看的東西很多,是你學到了很多知識。但是這些知識之間的關聯,需要你進行深入思考才能得到的。找到知識之間的聯絡,找到知識和實際場景之間的聯絡,多想想為什麼,才能做到融會貫通。

  往期精彩【面試現場】合集

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=gif