簡明解釋算法中的大O符號


  今天聽課老師沒講什么,但還是介紹了一些學長學姐們的學習工作創業經歷啥的..或許見聞別人的人生和生活並不會給自己帶來什么,但也算是一種閱歷一種學習吧!我記不住他們任何人的名字,但我知道了他們學習做題的習慣和好方法,至少了解到世界上比我聰明還比我勤奮的人太多了,自己可不能這樣就甩鍋放棄。

  今天看了關於死亡的文章,總結下來一句話就是:如果你對死亡感到畏懼——那就說明你對生活還有期盼還有遺憾還有追求還沒試過真正的體驗生活。

  好了,開始記錄今天我的學習:

   大O符號是一種算法復雜度的相對表示方式。

  

  • 相對(relative):你只能比較相同的事物。你不能把一個做算數乘法的算法和排序整數列表的算法進行比較。但是,比較2個算法所做的算術操作(一個做乘法,一個做加法)將會告訴你一些有意義的東西;
  • 表示(representation):大O(用它最簡單的形式)把算法間的比較簡化為了一個單一變量。這個變量的選擇基於觀察或假設。例如,排序算法之間的對比通常是基於比較操作(比較2個結點來決定這2個結點的相對順序)。這里面就假設了比較操作的計算開銷很大。但是,如果比較操作的計算開銷不大,而交換操作的計算開銷很大,又會怎么樣呢?這就改變了先前的比較方式;
  • 復雜度(complexity):如果排序10,000個元素花費了我1秒,那么排序1百萬個元素會花多少時間?在這個例子里,復雜度就是相對其他東西的度量結果。
  • 總結下來其實也就是大O符號在不同問題的表達還是不一樣的,也就是對於計算機執行我算法的次數,便表示了這些時間概念。比如旅行家問題的階乘算法、二分搜索、多項式時間之類的!只要算法簡單還有執行力強,問題在強大的計算機面前還是可以解決的!主要從期望情況和最壞情況去考慮問題,讓思路更嚴謹,目標更明確。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM