2013-08-06 48 views
1

我到處看到這些編程問題:旋轉數組的原因是什麼?

  • 查找排序的旋轉整數數組中的元素。

  • 已排序的數組已向左旋轉了r次。儘量少找時間。

  • 通過旋轉到位ķ位置的數組(不使用額外的內存)

  • 等等....

我的問題是,爲什麼會有人這樣做呢?是否有一個真正的算法需要線性陣列旋轉?

+0

旋轉的概念在幾個地方彈出,但它通常更聰明地實現(參見環形緩衝區),因爲實際上旋轉的數組元素需要線性時間,因此在需要時需要一定的時間。 – delnan

+0

這是一個很廣泛的問題。可能有一千個理由......簡單的例子:旋轉的數組是2D空間矢量的座標,是圍繞(1,1)軸的鏡像變換。 – lapk

+0

我記得有一個基本上是數組操作的項目,因爲爲了創建鏡像或旋轉圖像,你必須改變索引,這樣做需要數組操作。儘管這些問題似乎毫無意義,但真正的目標是創造一種思考和解決問題的方式,它們可能具有真實世界的應用程序! – StevenTsooo

回答

0

因爲他們是練習嗎?這就像學校給出的問題。他們不是現實世界的問題。他們是應該教你一些事情的問題。你所有的三個例子都很有趣。

已經有太多的程序員在編寫(壞)代碼之前10分鐘無法完成任務。這些問題需要你去思考。

我會補充說,有各種程序員(包括我在內)喜歡複雜的問題。複雜的數學+編程問題就像數獨,但更好,因爲在做數獨之後,你還沒有學到任何新東西(你只是鍛鍊了你的大腦),而在做了一個複雜的問題之後,有時你學到了一些東西(至少是如何讓你的代碼完全不可讀:-)),當然你已經鍛鍊了你的大腦。甚至有幾百個問題的網站,如spoj

+0

似乎對我來說是一個很無用的運動。 – Oleksiy

+0

@OleksiyDobrodum所以你能解決所有三個?我認爲我不能在1小時內完成任何一項。 – xanatos

+0

@OleksiyDobrodum爲什麼沒用?它可以幫助人們發展他們的計算思維,並且效果很好 –

0

好吧,這是一種深入瞭解的方式,是嗎?我訓練很努力,當你比賽更容易時,我完全確定在這種情況下,這將是有用的!

相關問題