2011-06-06 21 views
-2

有人可以列出一些下列算法/結構在web開發中彈出(我是一個有抱負的Web開發人員,我很想知道什麼時候這些各種主題彈出):在網頁開發中彈出各種算法/結構的列表

  • 冒泡排序
  • 插入排序
  • 選擇 排序
  • 歸併
  • 快速排序
  • 堆棧
  • 隊列
  • 鏈表
  • 二叉樹
  • 二叉搜索樹
  • 平衡二叉樹
  • AVL樹
  • 伸展樹
  • 紅黑樹
  • 優先隊列
  • 散列
  • 鄰接鏈表
  • 鄰接矩陣
  • 圖 遍歷(深度優先搜索, 廣度優先搜索)
  • 最低 生成樹(Kruskal算法, Prim算法)
  • 向圖 (Digraph)
  • 拓撲排序

該列表是我的數據結構和算法類中涵蓋的一些主題。可能還有一些其他重要的,我忘了列出。

+2

氣泡排序只顯示在作業問題。從不在現實世界的編程。這是一個功課問題嗎? – Asaph 2011-06-06 23:34:47

+0

不,我已經完成課程並決定列出所有涵蓋的主題。我在問這個問題,以便更好地瞭解我的知識如何在現實世界中用於我想要涉及的領域。 – 2011-06-06 23:38:58

+0

Web開發是一個廣泛的術語。如果你包含路由,擴展等等,你可以包括所有這些,但是如果你只是寫一個簡單的Rails應用程序,那麼你只需要一點點算法知識 - 任何更具體的你可以得到將有助於縮小範圍。 – dfb 2011-06-06 23:39:37

回答

2

其中大多數對教學概念很重要,雖然其中一些常用於大多數應用程序(例如隊列&),但它們並不真正「彈出」您描述的方式。

瞭解這些結構說明的原理以及知道何時使用LinkedList與ArrayList是很重要的。但就「我什麼時候會使用這個」而言,指向某個網站的特定部分並說:「看,他們在這裏使用了一個二叉搜索樹」,這是非常困難的。

1

對於大多數Web開發,這些可以組合在一起。

  1. 不少網絡開發將使用SQL後端。在select聲明中,您可以有一個order by子句,無疑將實現一個您指定的種類(或類似於intro-sort,這在Quicksort中大部分是相當小的變體)。
  2. 同樣,你會處理關聯數組,它通常作爲某種哈希表或某種平衡樹實現 - 但也可以使用splay樹。
  3. 圖形和圖形遍歷在你的典型(例如電子商務)web開發中沒有很大的影響。然而,對於某些類型的網絡管理,通常將諸如服務器之類的東西放入圖形的節點中,用弧來表示網絡連接。
  4. 您使用的大多數語言都會隱式地使用堆棧,但在典型的Web開發中顯式使用它們是相當罕見的。
  5. 隊列將取決於。你不可能實現一個隊列,但是如果(例如)你處理一個分佈式數據庫,你最終可能會使用它提供的某種隊列。