我心目中的資料結構和演算法

2022-05-15 15:37:28 字數 1527 閱讀 3983

資料這個概念,可能以前比較模糊,但是近兩年來,已經越來越為人所知。為什麼資料越來越重要?我們到底處在乙個什麼樣的時代?

資料之所以重要,是因為可以對未來的趨勢進行分析,為決策的準確性提供保障,避免不必要的運營戰略,為不同標籤使用者提供最準確的服務,進行廣告文章推送,提供節日祝福,對使用者近期的消費狀態進行匹配,制定商品排列推薦,包括現在一號店等公司的小區雷送等,都是基於資料的分析,為使用者提供服務。往來,乙個產品的定位和包裝,往往是乙個pm或運營乙個個調研,乙個個人去問,豈不是很麻煩且沒有任何效率可言?而今利用演算法去對不同地區,時段,年齡的使用者進行分析,根據不同比例的權重去編寫演算法,快速的利用歷史資料推算出下一步產品的方向,豈不是很完美?

其實就我個人而言,我覺得演算法的應用可以普及到生活的方方面面,hr可以用簡單的演算法來對簡歷進行快速篩選,這對乙個程式設計人員來說,可能只是十幾行**的事情。他可以為每乙個線下零售行業提供對地段流量,房價租金的統計,最終通過使用者輸入的啟動資金,地區規劃得出準確的經營計畫。

人工智慧是當前的乙個熱門話題,它也離不開演算法的支援,更需要乙個穩定的結構去支援針對不同機器學習的演算法分配,對內容進行過濾,針對標籤進行分類,最後完成了類似於天貓精靈這種居家可愛的人工智慧音響。

再來說說結構,可能演算法對剛開始從事程式設計行業的人來說還太遠,但是如果能夠對結構的節點,鏈結,穩定性有所認知,那對**的優化可以說是不可量記。為什麼我可以這麼說呢?因為我最近接觸到的乙個關於鏈路流程的專案就用到了對鏈式結構的發散節點鏈結,通過遞迴返回確定對應關係,這本是很基礎的結構,但是我發現周圍居然鮮有人能想到這一點,以至於我開創了他們認知的乙個先河:在資料庫中設立每一條資料的上下節點,從而把資料拆分開來,遍歷時通過乙個個節點集合去判斷,前端顯示排列用遞迴進行節點歸屬,從而鏈結,也大大提高了後續開發的擴充套件性。我看到周圍同事的**,大多數都有反覆對資料庫連線的問題,很少有人考慮這樣會為程式帶來多大的負擔,針對對資料庫的遷移,如果反覆鏈結,這其中對速度的折損何其之大?往往對**的優化難點就在於,整個架構崩潰了,難道我要重新組織架構嗎?

乙個懂資料結構的人在專案前期的討論中,能為公司帶來的貢獻是不可估量的,我相信一些擁有複雜架構的公司都能深深體會到這一點。

大到人工智慧的時代趨勢,中到乙個大型商業公司的運營策略,產品方案,小到乙個線下商店的地段,資金預估,資料結構和演算法,是這一切實現的基礎。

偶然間和朋友聊到,那麼多的資料,彷彿並不缺乏這種機器訓練需要的元素,但是為什麼常常無法得到很好的利用,關於這點,我們各執己見。他從產品出發,看到的是因為無法對產品的需求作出判斷,所以無法很好的利用資料。我從技術出發,看到的是乙個優秀的演算法工程師一定可以透過產品的需求,通過演算法,針對不同標籤,訓練出最終合適可用的資料和推算結果。其實也不算各執己見,只是互為補充。

那麼,資料結構和演算法的重要性也就不言而喻了,這可以說是當下的大話題了,曾經冷門的資料分析師,一下子成為了炙手可熱的人物。數學這個程式設計師的不變追求,對於公司來說的難點程式優化,離不開資料結構。

從這篇文章開始,我就將把我對資料結構和演算法的一些學習和個人見解,帶入到一部分真實需求中,展現在我的技術分享中。 

我心目中的好的技術教程

當人類進入網際網路時代,便宣告乙個新的學習模式 網上學習的誕生。現在各種網上教程之多可以用恆河沙數來形容 這裡暫時除開電子書,單指網頁上的短小教程 但是我們應該看到這類教程存在的缺點,總的來說就是 在一篇教程裡真理與繆誤並存,或缺乏條理,或語蔫不詳,可操作性不強。這裡我並非批評這些教程作者。應該看到...

我心目中的商用化開發和工程化開發

今天是上網搜東西時,偶然發現這個活動的,看了活動的介紹和提供的資料,感慨頗深。我心目中的商用化就是面對使用者提出的需求,以最少的成本來盡可能高質量的完成使用者的的需求,如果質量低的話,後期所付出的維護成本會很高,所以質量最好好一些,回頭看自己學習的課程,資料結構,作業系統,組成原理,為什麼技術會有那...

我心目中的「商用化開發」和「工程化開發」徵文大賽

活動獎品 秀獎5名,每人可獲得肖舸老師的新書 0 bug c c 商用工程之道 1本 注意事項 學習材料 l 做什麼樣的軟體才能賺錢?學什麼樣的知識才能賺錢?l 關於計算機專業的學習 答一位同學提問 l 商用工程開發中的一些習慣 l 資料傳輸工程學什麼 答一位同學提問 l 如何訓練大學生的工程實戰能...