1. 程式人生 > >資料結構中的演算法都需要實現嗎?

資料結構中的演算法都需要實現嗎?

【問】

  老師你好,學習資料機構,是不是書上的每一個演算法都用程式設計語言在計算機實現?還是隻理解演算法就可以?

【答】

  每一個演算法都用程式設計語言在計算機實現?不必絕對這樣做,你的時間需要有效利用,實現僅在於增加體驗,增加思考以及注意到細節的機會,而不是強制的“任務”。再者,對於程式設計語言本身有待提高的同學而言,這也是熟悉語言的又一個機會。

  只理解演算法就可以?理解是一定的,還不夠。除了上述必要的實現,增加體驗外,注意到演算法的效率問題、如何分析得到這樣的結論,從而知道每一個演算法的優勢和弱勢,懂得在適當的場合用適合的演算法。進而,利用學得的演算法,做點實踐的“專案”還是需要的。

  這些可以作為比較高的要求了,課外安排出有效的自主學習解決。可嘆,目前很多同學只停留在考試能通過的層次。你問出這樣的問題,相信你能突破。

==================== 迂者 賀利堅 CSDN部落格專欄=================

======== 為IT菜鳥起飛鋪跑道,和學生一起享受快樂和激情的大學 =======


相關推薦

資料結構演算法需要實現

【問】  老師你好,學習資料機構,是不是書上的每一個演算法都用程式設計語言在計算機實現?還是隻理解演算法就可以?【答】  每一個演算法都用程式設計語言在計算機實現?不必絕對這樣做,你的時間需要有效利用,實現僅在於增加體驗,增加思考以及注意到細節的機會,而不是強制的“任務”。再

java版資料結構演算法—連結串列實現佇列

package com.zoujc.QueueLink; /** * 連結串列實現佇列 */ class FirstLastList { private Link first; private Link last; public FirstLastList(){

java版資料結構演算法—連結串列實現

package com.zoujc; /** * 用連結串列實現棧 */ class MyLinkStack { private Link first; public MyLinkStack(){ first = null; } //判空

資料結構棧一些需要注意的地方

1. 棧的定義 棧(stack)是限定在僅在表尾進行插入和刪除操作的線性表。我們把允許插入和刪除的一端稱為棧頂(top),另一端稱為棧底(bottom),不含任何資料元素的棧稱為空棧。棧又成為後進先出的線性表。 棧的插入操作,叫作進棧,也稱壓棧、入棧;棧的刪除操作,叫作出棧

Javascript之資料結構演算法的HashMap實現

Javascript之資料結構與演算法的HashMap實現 1.自實現HashMap 1.自實現HashMap let LinkedList=require("./LinkedList") let loseloseHashCo

Javascript之資料結構演算法的Dictionary實現

Javascript之資料結構與演算法的Dictionary實現 1.自實現Dictionary 2.Es6中Map對比 3.Map總結 4.Es6中WeakMap類和WeakSet類 1.自實現Dicti

Javascript之資料結構演算法的Set實現

Javascript之資料結構與演算法的Set實現 1.ES6中的Set 2.自實現Set 1.ES6中的Set 請參考官網API:http://caibaojian.com/es6/set-map.html 2.

常用查詢資料結構演算法(Python實現

目錄 一、基本概念 二、無序表查詢 三、有序表查詢 3.1 二分查詢(Binary Search) 3.2 插值查詢 3.3 斐波那契查詢 四、線性索引查詢 4.1 稠密索引 4.2 分塊索引 4.3 倒排索引 五、二叉排序樹 六、 平衡二叉樹 七、多路查詢樹(B樹) 7.1 2-3樹 7.2 2-3-4樹

Javascript資料結構演算法--棧的實現與用法

棧資料結構 棧是一種遵從後進先出(LIFO)原則的有序集合。新新增的或者待刪除的元素都儲存在棧的同一端,稱作棧頂,另一端就叫棧底。在棧裡,新元素都靠近棧頂,舊元素都接近棧底。 我們在生活中常能看到棧的例子。整齊堆起來的書,廚房堆起的盤子等 棧也被用在程式語言的編譯器和記憶體中儲存變數、方法呼叫等。 /**

資料結構演算法(JavaScript實現

1.如何在陣列中間位置新增陣列function avaerageAdd(){ var nums = [1,2,3,4,5,6,7,8]; var newElements = [233,666]; nums.splice.apply(nums, [Math.floo

資料結構單鏈表的實現+單鏈表的C語言實現原始碼

線性表(List):零個或多個數據元素的有限序列。線性表的抽象資料型別。 線性表的順序儲存: 優點:無須為表示表中元素的邏輯關係而額外的儲存空間,可以快速的取表中任意位置的元素。 缺點:插入和刪除操作需要轉移大量元素,線性表的長度較大時,難以確定儲存空間的容量, 造成儲存空

【scala 資料結構演算法】Scala實現:氣泡排序

主要內容: 1、氣泡排序演算法原理 2、scala實現 3、python實現 4、goland實現 氣泡排序演算法原理: 1、比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。 2、對

16_資料結構演算法_遍歷樹(前序、序、後序)_Python實現

#Created By: Chen Da #定義一個二叉樹的類 class Binary_Tree(object): def __init__(self,root): self.key = root self.left_child = None

【專欄】資料結構演算法之美-為什麼很多程式語言的陣列是從 0 開始的

學習筆記 陣列的特徵 1.線性表 資料排成像一條線一樣的結構,資料之間只是簡單的前後關係。除了陣列是一種線性表結構外,連結串列、佇列和棧也是。與之對應的像二叉樹、堆、圖等就是非線性表。 2.使用連續

PTA 資料結構演算法題目集(中文)6-7 在一個數組實現兩個堆疊

6-7 在一個數組中實現兩個堆疊(20 分)本題要求在一個數組中實現兩個堆疊。函式介面定義:Stack CreateStack( int MaxSize ); bool Push( Stack S, E

資料結構演算法分析筆記與總結(java實現)--陣列11:陣列的逆序對(﹡)

題目:在陣列中的兩個數字,如果前面一個數字大於後面的數字,則這兩個數字組成一個逆序對。輸入一個數組,求出這個陣列中的逆序對的總數P。並將P對1000000007取模的結果輸出。 即輸出P%1000000007 輸入描述: 題目保證輸入的陣列中沒有相同的數字 資料範圍:  

PTA資料結構演算法題目集(中文)4-7 在一個數組實現兩個堆疊 (20分)

本題要求在一個數組中實現兩個堆疊。 函式介面定義: Stack CreateStack( int MaxSize ); bool Push( Stack S, ElementType X, int Tag ); ElementType Pop( Stack S, in

資料探勘演算法資料結構演算法有區別

學習資料探勘演算法也有一段時間了,某天小夥伴問我,你學的這個跟我們之前學校學的資料結構演算法有什麼區別嗎。我很快回答:當然有區別啊。其實過後細想,究竟有啥區別。就是因為這個問題,才有了今天這篇文章。 那麼在我們開始前,可以先暫停閱讀一分鐘,回憶下已瞭解資料結構的演算法還有資料探勘演算法,思考下這兩種演算法有

資料結構演算法 二分法查詢【Python與C】的實現

程式碼如下: Python: def ErFen(List ,Number ,Len): left = 0 high = Len - 1 while left <= high: mid = (left + high)//2

資料結構演算法----自定義類函式與資料成員

近期在梳理知識,做一個小結,希望自己能多多使用 在標頭檔案中: enum sign {plus, minus}; class Accruency { public: Accruency(sign s = plus, unsigned long d = 0, unsigned in