如何更好地使用 Javascript 算法

如何學習編寫算法

編寫算法可能會讓人不知所措,即使對於最有經驗的開發人員也是如此。他們中的許多人記住了解決特定問題的所有不同方法。但是,如果我們改為查看有關如何查看問題的指導圖以便解決問題呢?

本文研究算法:它們是什麼,它們將資源用於什麼以及如何開始學習編寫算法。

什麼是算法?

算法是一組指令。如果您將算法與配方進行比較,您可以看到算法的樣子:

<輸入類型=“隱藏”名稱=“ck_campaign”值=“ft-express-wgt-blog”><輸入類型=“隱藏”名稱=“ flow” value = “sft” >

漢堡食譜

準備時間:10 分鐘

輸入:

成分[] - 包含文章的 名稱 數量 必要的文章列表em>

Ex: [{name: " beef, 85/15 ", quantity: "2 lb" }, {name : "美國奶酪,數量:"8片"}等]

方向[] - 描述完成並將漢堡呈現給飢餓的食客的步驟的字符串列表

例如: [“把肉扔出去,分成 8 個不同的部分,”,“將這些部分捲成一個球,”,“將每個球壓平成圓盤形狀。所有圓盤的大小應該相同,”等等]

產量:8 份


An算法,當用代碼編寫時,假設您至少了解一種編程語言及其流行的方法、它的數據結構以及如何使用它。這個概念類似於假設您知道某些烹飪方法以及如何使用廚房配件的食譜。

算法具有輸入和輸出。結果(解決大問題)來自解決沿途的小問題。

什麼是算法?

算法無處不在,因為它們可以解決問題。計算機和 Web 開發在編寫代碼時使用它們來告訴計算機做某事。

如果我們有一個名稱列表,例如,我們可以使用像 冒泡排序 到按名字或姓氏對姓名進行排序。我們還可以使用二進制搜索算法在同一個列表中搜索姓名。這些只是您可以利用的一些標準算法。

請注意,完成一門課程後,您永遠不會真正完成編寫算法的學習&ndash;您只會變得更好。我們將在下一節中看到讓您更接近編寫算法的方法。

如何學習編寫算法:循序漸進

以下是學習編寫算法的推薦分步提示。

1. 學習一種編程語言
Java、JavaScript 和 Python 都是流行的語言 ‚Äã‚Ä用於編寫計算機算法。選擇一種語言並從內到外學習它。

將這些概念融入您對所選語言的理解中:

2. 數據結構

您必須精通數據結構才能使您的算法更高效。確保您了解每種數據結構的用途及其工作原理。

3. 編寫算法:解決問題的過程

您已經學習了基本的編程語言和足夠的數據結構來開始使用。恭喜!開始吧。

從小處著手。了解 George Pòlya 關於故障排除的論文中的四個概念很重要(參見 資源 。這裡也添加了一些步驟來分析其一般方法:

George Pòlya`s解決問題的指南

  1. 了解問題
  2. 您在尋找什麼?
  3. 解決問題並解釋它用你自己的話 - 嘗試向某人解釋他們在技術上並不好。
  4. 輸入問題關鍵字以幫助您制定基本計劃 - 無需代碼。只需獲得答案所需的步驟。
  5. li>
  6. 重複此計劃以創建代碼解決方案。
    1. 如果找不到解決方案,請返回步驟 n。確保您理解問題。您返回的輸出是否正確?是您可能在編碼提示中遺漏了什麼?
  7. 您的解決方案的 Big O 評級是多少?您可以參考 空間複雜度 時間複雜度 ?

4. 從小開始

它從一個基本的搜索算法開始,它遍歷一個字符串或數組來查找一個條目。如果未找到該條目,則返回 false。如果找到,則返回 true。

開發這個初學者的算法並使用其他數據結構,看看其他人可能需要不同的過程。嘗試對條目進行排序以使用更有效的搜索算法。

使用網站練習算法,例如資源部分中列出的算法,以提高您的技能。

5. 切換到更難的算法

strong>

經過多次迭代,您可以切換到更難的算法。此時,您應該能夠重新創建一些排序算法,包括冒泡排序和歸併排序。二進制研究也應該成為您日常編程經驗的一部分。

繼續使用網站來練習算法以提高您的技能。用稍難標記的問題測試自己,看看你的表現如何。

最好的算法課程和培訓

每個人的學習方式都略有不同。以下是一些可用的最佳算法課程和培訓。有些是付費的,但也有免費的。這個列表沒有特別的順序。

在線算法課程

這裡有一些最好的在線算法課程:

斯坦福大學算法專業

  • Coursera
  • 4門課程:
    • 劃分規則、排序和搜索以及隨機算法
    • 圖形搜索、更短路徑和數據結構
    • 貪心算法、最小覆蓋樹和動態規劃
    • 重新審視較短的路線、NP-Complete 問題以及如何處理他們的主題
  • 4 個月
  • 先決條件:該課程與語言無關,但假設您至少了解一種編程語言、基本數據和足夠的數學知識以了解證明是什麼。
  • 證書:49 美元/月直至完成;審計:免費

斯坦福大學的 Tim Roughgarden 教授在 Coursera 上教授算法研究生課程。這些課程將涵蓋您對算法有很好理解所需的幾乎所有內容,以便您在技術面試中表現出色。

算法,IIT Bombay

  • edX
  • 6 週,6-8 小時 /一周
  • 先決條件:基本了解數據結構
  • 證書驗證:$ 149;無證書:免費

本課程是 IIT Bombay Fundamentals of Computer Science XSeries 計劃的一部分。此處涵蓋的主題包括排序和搜索、數字算法、字符串算法、幾何算法和圖形算法。

免費算法課程

算法介紹

  • Udacity
  • 加利福尼亞。 4 個月,自學
  • 先決條件:至少一門編程語言;該課程在示例中使用 Python
  • 免費

這是由 Udacity 的 Michael Littman 提供的關於算法的免費速成課程。使用凱文培根現象的六度來展示算法是如何工作的。想想六度的分離——據說所有的社會關係都是六個或更少的社會聯繫。使用相同的概念,但與凱文培根的電影和演員一起使用。

FreeCodeCamp,基礎算法腳本

  • FreeCodeCamp
  • 自學
  • 前提:JavaScript和數據基礎知識
  • 免費

這一系列的 FreeCodeCamp 練習將幫助您在解決小問題之前取得成功,然後再解決棘手的問題。自定進度的練習使用 FreeCodeCamp 學習平台來測試您的代碼。

A算法可視化介紹

  • 教育
  • 自學,以文字和例子為主
  • 必備:JavaScript、Python、C ++ 或 Java
  • 免費

在本免費課程中,使用視覺和視頻輔助工具來說明算法的工作原理。集成的代碼環境使用戶體驗非常好。包括潛在的解決方案。

算法書籍

有幾本書可以幫助您成為更好的算法作者。其中許多可以在當地書店和亞馬遜上找到。

`Grokking 算法`

` 程序員和好奇者的插圖指南 `

作者 Aditya Bhargava

Grokking Algorithms 是最好的印刷算法書籍之一。 Bhargava 由一位藝術家轉行的軟件開發人員創建,採用圖解方法幫助您直觀地理解或使用算法。每章末尾的練習有助於鞏固本書的內容。

`算法簡述,第 2 版。 `

`實用指南`

作者: George T. Heineman、Gary inch、Stanley Selkow

本書採用基於模型的方法來設計了解何時實施挖掘算法。您將學習編寫解決方案的代碼,然後使用高級數據結構對其進行改進。解決方案採用 Ruby、Java、C++ 和 C,但可以輕鬆翻譯成您喜歡的語言。

`算法,第 4 版。 `

作者: Robert Sedgwick 和 Kevin Wayne

第四版 Sedgewick 和 Wayne 算法是對算法世界的精彩介紹。作者回顧了 50 多種最重要的算法,讓您受到關注。普林斯頓的教育工作者開發了一個 在線課程 很好地補充了本文。

資源

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method