資料結構中的演算法都需要實現嗎?
【問】
老師你好,學習資料機構,是不是書上的每一個演算法都用程式設計語言在計算機實現?還是隻理解演算法就可以?
【答】
每一個演算法都用程式設計語言在計算機實現?不必絕對這樣做,你的時間需要有效利用,實現僅在於增加體驗,增加思考以及注意到細節的機會,而不是強制的“任務”。再者,對於程式設計語言本身有待提高的同學而言,這也是熟悉語言的又一個機會。
只理解演算法就可以?理解是一定的,還不夠。除了上述必要的實現,增加體驗外,注意到演算法的效率問題、如何分析得到這樣的結論,從而知道每一個演算法的優勢和弱勢,懂得在適當的場合用適合的演算法。進而,利用學得的演算法,做點實踐的“專案”還是需要的。這些可以作為比較高的要求了,課外安排出有效的自主學習解決。可嘆,目前很多同學只停留在考試能通過的層次。你問出這樣的問題,相信你能突破。
==================== 迂者 賀利堅 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