回覆列表
  • 1 # 飛天老師

    演算法是需要長期積累而熟悉的。

    對於計算機軟體開發專業的人員來說,演算法是極其重要的,熟悉並掌握常用演算法,對理解問題、解決問題都是起著至關重要的。

    那麼,如何做才能更有效的掌握常用演算法呢?下面我來談談自己,看法。

    第一,找到興趣點,多看。

    剛開始學習演算法的同學,總感到枯燥乏味,沒有什麼實際的應用指導,也就沒有興趣去持續深入的學習,逐漸的,學過的什麼演算法,也忘的一乾二淨了,更不用說掌握了。

    解決的辦法就是:堅持看,多看,看看這種演算法在實際應用中的例子。這樣就不會覺得演算法枯燥無味了。

    第二,動手實踐,加強理解。

    沒有實踐的支撐,理論總是很飄渺的。每學一種演算法,必須親自把它用自己擅長的程式語言去實現。當你自己能夠用程式語言來實現某種演算法時,你會有一種成就感!同時,你也自然而然的,理解了該種演算法的思想,也就是掌握了這種演算法。

    第三,多學習他人的演算法解讀,仔細分析別人的思路。

    總之,演算法是一門非常重要的課程,也是很有意思的一門課程,祝你在學習的路上,用興趣去找到樂趣!

  • 2 # 老馬教育隨想

    作為一個曾經的計算機專業畢業生,根據自身近30年相關專業經歷,針對你的問題提出如下建議:

    1. 學好基礎。如果演算法基礎不過硬,首先還是要找本演算法教材,按部就班再學一遍,理解資料結構及相關演算法基本思想、基本原理。

    2. 多研讀優秀演算法程式碼,吸取基思想光芒。

    3. 要多加練習。善於把演算法用己的程式碼去實現、去實踐。在書寫程式碼、測試程式碼、完善最佳化程式碼中得到能力的昇華。

  • 3 # 小謝人家

    letcode你需要了解一下,這個網站上面有非常多的演算法題,刷一刷可以幫你快速瞭解演算法特性,程式碼實操,線上執行,也可以看看別人的解答,慢慢的會有很大提高。

  • 4 # 西行客5

    多找基本演算法書相互對照看,如果還是不太明白去網上搜一下相關主題,看看有沒有人的解釋能讓你明白,另外就是刷刷題,最重要的是保持關注,不要放棄,時間會說話

  • 5 # 蘇州科技城醫學科普

    可能你看演算法書的時候,感覺也能明白它的意思,但是一到實際應用就沒了方向。如果是這樣的話,你就要先明白,理解意思和掌握邏輯是兩個層面的境界。如何掌握了演算法的底層邏輯和實現邏輯?有個小技巧,就是你學會一個演算法後,要對一個計算機小白把演算法解釋清楚。如果小白聽的雲裡霧裡,那說明你一定沒掌握。基礎演算法的底層邏輯都是簡單的,演算法實現的步驟略有繁瑣,但完全可以分步拆解。能做到解釋清楚,就是真掌握了。

  • 6 # 劉海老師講Office辦公

    開場白:

    你好,我是踐行計算機教育劉老師,很高興回答你的問題,我一直從業計算機IT軟體培訓講師,之前也帶過很多學生跟我說這個話,覺得自己學不會開發,感覺很難,其實這些問題,我自己的親身經歷也身同感受。但是我們如何取剋制這樣的問題呢。

    如何學習有效的學校方式學習計算機

    首先,我先分享一下我之前學習計算機程式語言的時候的感受,剛開始接觸程式碼一臉懵逼,第一次接觸非常的陌生,老師步驟作業完全沒有思路,我不知道你是否有這樣的感受,我覺得有這樣的一個現象是正常的。我們要做的是什麼呢,就是了解程式的語法和演算法的思路分析,剛開始我們最好在編寫程式的時候加上一條條的註釋,這樣一步一步的分析,這個演算法的思路,然後就是多多的動手編寫程式,然後一點點的積累,演算法不是一上來馬上就明白了,是很多知識慢慢的積累,當你遇到同類似的題目,你腦海直接就能想出這道題的演算法實現是什麼。首先我們要學會慢慢的走路,不要急於求成。當過了一段時間之後,你回頭在去看你之前遇到的問題,這個時候你會有一種感受,原來這麼容易,因為你見多了題目。瞭解了演算法的本質,我最開始學習演算法,最開始都是模仿,什麼都理解不到,然後一點點在寫程式的過程中,慢慢的剖析。問題就迎刃而解了。

    分享氣泡排序演算法

    對於這道題,我們要去如何分析呢,第一,我們要知道這個演算法用來幹什麼的,排序對吧,我們要去了解冒泡的實現原理,我們是不是應該去了解冒泡的演算法規則,然後我們才能編寫出程式對吧。接下來看一個氣泡排序演算法的圖:

    在遇到任何一個演算法的時候,我們都需要用這樣畫圖方式或者其他方式去分析,然後再去用程式按照這個演算法去實現某個功能。

  • 7 # 陳老師悄悄敲程式碼

    從簡到難,循序漸進

    有一定程式設計基礎的朋友

    一定要看看資料結構之類的書籍

    然後學習一些經典的演算法

    多動手

    剛開始一定要先學會讀懂別人的程式碼

    理解其中的演算法思路

    然後是動手模仿著寫一些程式碼

    透過模仿,動手

    培養自己的動手能力

    慢慢的,感覺就來了

    興趣是第一老師

    很多人剛入門就退卻的原因

    就是因為沒有找到正確的方法

    除錯過程中

    屢次失敗後

    就漸漸懷疑自己不是“料”

    所以

    初學者一定要從易到難循序漸進

    培訓,可以讓你事半功倍

    特別是初學者

    沒有條件接受系統教育的

    最好是有人指導

    更容易“上道”

  • 8 # 末日反對

    看書看程式碼看影片刷題

    1.《資料結構和演算法》,基礎的排序查詢,圖,樹

    2.《redis原始碼》裡面有很多優秀的資料結構,簡單的連結串列陣列實現出字典,跳躍表,動態字串,還有雜湊演算法,極力推薦閱讀redis原始碼!!!

    3.去leetcode刷刷遞迴,動態規劃相關演算法的題目,總結思想

  • 9 # 小馬過河Vizit

    演算法有什麼用

    計算機的本質是儲存,計算和傳播。這些都是需要資源的,需要磁碟空間,cpu時間,網路頻寬。雖然目前的硬體很便宜,頻寬也越來越快。但是目前的資料量也越來越大。再加上為了容錯,一份資料需要幾個備份資料。這樣就要增加幾倍的資料量。

    資料量大了以後我們的儲存,cpu和頻寬就更顯的不足了。所以大資料和分散式系統和傳統的系統一樣都需要節約資源。

    我們在學習演算法的時候,除了要知道怎麼做,還要深入學習演算法分析,計算演算法的時間和空間複雜度,就是為了找到更為節約資源的方式。

    比如排序,快排的時間複雜度是O(n * logn),而氣泡排序的時間複雜度是O (n*n)。 假如你對100個數排序,每一次操作的時間是1ms:

    快排需要的時間是100*log(100) = 664ms,氣泡排序需要 100*100 = 10000ms

    如果你對1000000個數排序:

    快排需要的時間是1000000*log(1000000) = 19931568 ms (19931 / 1000 = 19931s, 5.5 小時),氣泡排序需要 1000000*1000000 = 1000000000000ms (1000000000s, 277777小時)。

    這個例子說明,不同的演算法需要的計算量的差別是巨大的。甚至有時候某些演算法雖然可以得到結果,但是因為太慢或者需要的空間太大在實際專案中沒法實施。比如利用氣泡排序對100萬個數排序幾乎不能接受。

    維基百科上有很生動的動畫。

    工作中會用到演算法嗎

    會。很多工作不用演算法也能行。但是如果要做的好就得考慮演算法。在我看來,每當你寫for迴圈的時候你就在採用遍歷演算法,每當你用if的時候你就是在查詢。如果for迴圈的輸入列表的規模特別大,你就得考慮演算法的執行時間。所以工作中經常需要做演算法分析。

    如果你想體驗一下演算法的區別,也不需要用真正的業務大資料。寫一個for迴圈隨機產生1億條資料升至更多。然後用不同的排序演算法試試看。

    這也是為什麼好一點的公司,演算法面試都是很重要的考核指標。因為大公司的程式要解決的問題的輸入的規模都是巨大的。必須考慮演算法的複雜度。

    如何學習演算法

    學習演算法需要耐心。剛開始學習演算法,不要急於上機程式設計。可以在白紙上用筆寫實現。很多面試過程,演算法都是需要在白紙上寫的。倒不是為了面試。主要是在白紙上寫便於你思考,集中精力的思考。

    在白紙上手動演算演算法的執行過程。這個過程挺繁瑣,但是對於你理解演算法,建立對演算法的形象思維邏輯很有幫助。而且這種畫面感對於提升你的演算法思維大有幫助。

    我分享了很多動畫來解釋分散式系統的原理,就是希望幫助大家形象的認識演算法。以後我會發布算法的動畫演示。

    好書推薦

    《演算法導論》,建議讀英文版。如果覺得不好懂,可以找中文版的讀,但是最好明白了之後再對照英文版讀一遍。公開課上也有影片,可以跟著學習。

    這本書我讀了至少3遍,影片也看了至少三遍。

    這位老師在第一堂課說了一句話我印象深刻:

    如果你想成為程式設計大牛,一種方法是不學習演算法,做程式設計工作10年。一種方法是學好演算法,程式設計工作1年。

  • 10 # 張之一

    或許不是“演算法差”,而是沒有真正掌握用程式語言解決實際問題的方法,即便程式語言也學了好幾門,甚至還學習了程式設計方法或軟體工程等,始終無法擺脫茫然。

    要解決這個問題,可閱讀一些規模難度適當的成熟程式碼作為鋪墊,然後試著從需求分析開始,獨立完成一個小有規模的實用程式。和完成程式設計練習題不一樣,遇到困難是很正常的,對付的辦法也不復雜:死纏爛打、決不放棄!

    程式設計能力的獲得不是按部就班信步走上一級級樓梯的過程,而是要一步蹦上一米來高的臺階。或許你會嘗試多次,但如果還希望做程式設計師,這一關你必須過;而上了這個臺階,你就是一位程式設計師了。

  • 11 # 使用者6123728000544

    演算法,我不想看見他,他也不想看見我。

    好在我現在的開發也用不到演算法。經常看到公司的大佬們侃侃而談,不明覺厲。

    經常還寫寫畫畫,爭的面紅耳赤。

    不過人家說了算,人家是架構師。

    有數學基礎的同學加油吧!

  • 12 # 枝枝葉葉

    有演算法 動態演示網站,裡邊演示 各種 演算法的動態過程,比如 二分查詢,二叉樹,最小生成樹,各種排序演算法等,先看這些網站,透過動態演示,獲得直觀感受以後,再學習程式碼

  • 中秋節和大豐收的關聯?
  • 四歲寶寶進書店(或者在家)一看書可以安安靜靜看幾個小時正常嗎?