【步兵 c++】一道排序算法題

【步兵 c++】一個排序算法題 by EOS.

年後第一次些博客,把丟下的東西拾起來。比如說 算(bo)法(ke)=、=
廢話不多說(不好意思講自己少寫了多少篇),進入正題!


一個不大不小的發現

這裏寫圖片描述
當一個有序數組經過幾次相鄰元素的調換後,會變成奇偶數分離的現象。
至於這是個什麼算法麼,哈哈、、、、、、我也不知道=、=
(ps: 學術型東西我不太在行,不要在一細節)

寫了算法驗證了下,應該是具有普遍性的。麼有問題。
這裏寫圖片描述


思維發散

把 1-10 十個數字看成一串規則有序的變量,我們就可以輕易實現這樣的效果。
這裏寫圖片描述

然後再把 c 視爲 ab 組成的一個整體。又會出現下面的現象。
這裏寫圖片描述(圖-o_o)

而a1-an + b1-bn,我們只需要1和n做一下交換,step設爲2,做一個循環,
就可以輕鬆變爲以下狀態:
這裏寫圖片描述
再稍微一變換就可以(圖-o_o)中 的第一組數據的樣子。

也就是說可以用 空間複雜的爲1, 來實現 “a1-anb1-bn 轉變爲 a1b1-anbn”


總結

其實,要實 “a1-anb1-bn 轉變爲 a1b1-anbn”並不難,申請一個同樣大小的空間,
把0,n, 1,n+1 這樣依次放進去是最簡單也是最直觀的,但當空間遇到瓶頸時,這個算法就直接pass了。
又或者數據有幾十兆,開銷就會變得非常驚人。這種時候算法的重要性就凸顯出來。

其實是一道面試題,但是當時心沒有靜下來沒有很好的處理好,總要有始有終,
所以寫個博客督促一下自己,順便做一下分享。

算法是重要的,海量的業務邏輯業也比不上一個精妙的算法~效率至上!

See Again~
之前
真愛無價,歡迎打賞~
讚賞碼

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章