1、數據結構的歷史背景及現狀,有沒有必要學習數據結構 在電腦發展的初期,人們使用電腦的目的主要是處理數值計算問題。當我們使用電腦來解決一個具體問題時,一般需要經過下列幾個步驟:首先要從該具體問題抽象出一個適當的數學模型,然後設計或選擇一個解此數學模型的演算法,最後編出程式進行調試、測試,直至得到 ...
1、數據結構的歷史背景及現狀,有沒有必要學習數據結構
在電腦發展的初期,人們使用電腦的目的主要是處理數值計算問題。當我們使用電腦來解決一個具體問題時,一般需要經過下列幾個步驟:首先要從該具體問題抽象出一個適當的數學模型,然後設計或選擇一個解此數學模型的演算法,最後編出程式進行調試、測試,直至得到最終的解答。例如,求解梁架結構中應力的數學模型的線性方程組,可以使用迭代演算法來求解。 由於當時所涉及的運算對象是簡單的整型、實型或布爾類型數據,所以程式設計者的主要精力是集中於程式設計的技巧上,而無須重視數據結構。隨著電腦應用領域的擴大和軟、硬體的發展,非數值計算問題越來越顯得重要。據統計,當今處理非數值計算性問題占用了85%以上的機器時間。這類問題涉及到的數據結構更為複雜,數據元素之間的相互關係一般無法用數學方程式加以描述。因此,解決這類問題的關鍵不再是數學分析和計算方法,而是要設計出合適的數據結構,才能有效地解決問題。 現如今,電腦專業本科生都開設數據結構課程,它是電腦學科知識結構的核心和技術體系的基石。研究生考試也是必考科目,隨著科學技術的飛速發展,數據結構的基礎性地位不僅沒有動搖,反而由於近年來演算法工程師的高薪火爆,使得數據結構的重視程式空前高漲。很多人覺得基本的數據結構及操作已經在高級語言中封裝,如C++、JAVA,棧、隊列、排序、優先隊列等等,都可以直接調用庫函數,學會怎麼調用就好了,幹嘛要重覆造輪子? 那麼到底有沒有必要好好學習數據結構?2、學習數據結構有什麼用處
(1) 學習數據有效存儲的方法 很多學生在學習數據結構時,問我要不要把單鏈表插入刪除背下來?要不合上書就不會寫了。我非常詫異,為什麼要背?理工科技術知識很少需要記憶的,是用的,用的!學習知識不是死記硬背,更重要的是學習處理問題的方法。同一個問題,如何有效地存儲數據,不同的數據結構產生什麼樣的演算法複雜性,有沒有更好的存儲方法提高演算法的效率?通過學習數據結構,更加準確和深刻地理解不同數據結構之間的共性和聯繫,學會選擇和改進數據結構,高效地設計並實現各種演算法,這才是數據結構的精髓。 (2) 處理具有複雜關係的數據 現實中很多具有複雜關係的數據,無法通過簡單的庫函數調用實現。如同現在很多晶元高度集成,完全不需要晶元內部如何,直接使用就行了。但是,如果在現實中遇到一個複雜問題,一個晶元只能完成其中一個功能,難道要連接十幾塊晶元來解決這一個問題?這顯然是不合適的,我們需要的是完成該複雜問題的一個晶元,因此需要運用所學的數據結構知識,高效處理具有複雜關係的數據。3、學習數據結構的意義
數據結構是電腦科學與技術專業、電腦信息管理與應用專業,電子商務等專業的基礎課,是十分重要的核心課程。所有的電腦系統軟體和應用軟體都要用到各種類型的數據結構。因此,要想更好地運用電腦來解決實際問題,僅掌握幾種電腦程式設計語言是難以應付當前眾多複雜的課題。要想有效地使用電腦、充分發揮電腦的性能,還必須學習和掌握好數據結構的有關知識。打好“數據結構”這門課程的扎實基礎,對於學習電腦專業的其他課程,如操作系統、資料庫管理系統、軟體工程、編譯原理、人工智慧、圖視學等都是十分有益的。4、總結
學習數據結構的目的是為了瞭解電腦處理對象的特性,將實際問題中所涉及的處理對象在電腦中表示出來並對它們進行處理。與此同時,通過演算法訓練來提高學生的思維能力,通過程式設計的技能訓練來促進學生的綜合應用能力和專業素質的提高。獲取Java數據結構是演算法學習資料請點擊某寶:Java數據機構與演算法。