蕭然坐了下來,調出劉景的那套排序演算法,閱讀了一遍後,臉上滿是不可思議之色。
“這套演算法的設計思路好新奇、好巧妙啊!竟然沒人想到過!”蕭然讚歎地說道。
“嘿嘿!”劉景在一旁嘿嘿傻笑著,被蕭然誇讚,他有些不好意思。
接著,蕭然開始使用數學歸納法來推算這個演算法的時間複雜度。
其實,不用計算也知道,只看一眼,他就能看出這個排序演算法的時間複雜度為O(
log
)。
這個級別的演算法時間複雜度已經是最優的了。
眾所周知的快速排序演算法、歸併排序演算法和堆排序演算法都是這個級別。
蕭然現在要做的就是給出這個演算法時間複雜度的證明,即,採用數學歸納法來證明這個排序演算法的時間複雜度是O(
log
。
這個證明的過程對於蕭然來說,實在簡單不過了,不過片刻,整個證明過程就已經寫好了。
他繼續研究這個演算法的穩定性,發現對於一組有多個重複數字的陣列,經過排序後,這些重複數字的排序順序並未發生改變,這說明這個排序演算法是一個穩定的演算法。
蕭然似乎想起了什麼,他不禁有些震驚激動的瞪大雙眼,他緊張地快速拿過紙筆,激動地在草稿紙上快速書寫著。
一旁的劉景疑惑地看著蕭然的反應,一時間不清楚蕭老師這是怎麼了。
“哈哈,小景,你真是太棒了!”突然,蕭然站起身來,哈哈大笑地拍著劉景的肩膀道。
“蕭老師,您沒事吧?”劉景被蕭然的這一套反應搞得有些不知所措。
蕭然穩了穩自己快速跳動的心臟,情緒慢慢變得平穩了一些,他嚴肅地道:“恭喜你,小景,你成功設計出了一套最優的排序演算法,這下可不得了啦!”
經過近百年的發展,排序演算法目前已經算是被研究的比較透徹的了,但是目前還沒有一種演算法能夠同時滿足以下四個條件:
1.平均時間複雜度為O(
log
級別。
2.排序過程中的所用額外空間為O(1級別。
3.原地排序
4.穩定性
然而,劉景無意之中設計的這套排序演算法,竟然完全滿足這四個條件。
這意味著一種全新的排序演算法即將面世,並在以後將會被無數人使用。
這也意味著,劉景的名字將會隨著這套演算法一起被寫入計算機歷史中。
蕭然作為劉景的老師,也會因此而沾光,這對於蕭然和劉景來說,都是一件無比榮耀的事情!