更新時間:2020-09-09 15:13:57 來源:動力節點 瀏覽1790次
假設有一道題目:有一組N個數而要確定其中第k個最大者,我們稱之為選擇問題,那么這個程序如何編寫?最直觀地,至少有兩種思路:
1、將N個數讀入一個數組中,再通過某種簡單的算法,比如冒泡排序法,以遞減順序將數組排序,則第k個位置上的元素就是我們需要的元素
2、稍微好一些的做法,將k個元素讀入數組并以遞減順序排序,接著將接下來的元素再逐個讀入,當新元素被讀到時,如果它小于數組中的第k個元素則忽略之,否則將其放到數組中正確的位置上,同時將數組中的一個元素擠出數組,當算法終止時,位于第k個位置上的元素作為答案返回
這兩種算法都很簡單,但是假設我們有一千萬個元素的隨機文件和k=5000000進行模擬將發現,兩個算法盡管最終都可以給出正確答案,但是在合理時間內均無法結束。因此,這兩種算法都不能被認為是好的算法,因為從實際角度出發,它們無法在合理的時間內處理輸入的數據。
數據結構和算法分析的提出
在許多問題中,一個很重要的觀念是:寫出一個工作程序并不夠。如果這個程序在巨大的數據集上運行,那么運行時間就變成了重要的問題,我們將在接下來的文章中看到對于大量的輸入如何估計程序的運行時間,尤其是如何在未具體編碼的情況下比較兩個程序運行的時間。我們還將看到徹底改進程序速度以及確定程序瓶頸的方法,這些方法將使得我們能夠發現需要我們集中精力努力優化的那些代碼段。
那么,首先,先了解一下什么是數據結構和算法分析(特別指出,后文的例子均以Java代碼編寫)。
數據結構
數據結構是計算機存儲、組織數據的方式,是指數據相互之間存在一種或多種特定關系的數據元素的集合。通常情況下,精心選擇的數據結構可以帶來更高的運行或者存儲效率(這就是為什么我們要研究數據結構的原因),數據結構往往同高效的檢索算法和索引技術相關。
常見的數據結構有數組、棧、隊列、鏈表、樹、散列等,這些數據結構將是本數據結構的分類中重點研究的對象。
算法分析
算法是為求解一個問題需要遵循的、被清楚指定的簡單指令的集合。對于一個問題,一旦某種算法給定并且(以某種方式)被確定是正確的,那么重要的異步就是確定該算法將需要多少注入時間或空間等資源量的問題。如果:
1、一個問題的求解算法竟然需要長達一年時間,那么這種算法就很難有什么用處
2、一個問題需要若干個GB的內存的算法,在當前大多數機器上也是無法使用的
動力節點Java數據結構與算法視頻:
數據結構是指相互之間存在一種或多種特定關系的數據元素的集合,數據結構也是計算機存儲、組織數據的方式,通常情況下,良好的的數據結構可以帶來更高的運行或者存儲效率,往往與性能、優化話題相關 。
目錄
001.數據結構&算法:數據
002.數據結構&算法:數據元素
003.數據結構&算法:數據對象
004.數據結構&算法:概述
005.數據結構&算法:線性關系
006.數據結構&算法:樹形關系
007.數據結構&算法:圖形關系
008.數據結構&算法:數據關系小結
009.數據結構&算法:抽象數據類型
010.數據結構&算法:算法及性能分析-什么是算法
011.數據結構&算法:算法及性能分析-算法的基本特征
012.數據結構&算法:算法及性能分析-算法的設計要求
013.數據結構&算法:算法及性能分析-算法的時間復雜度
014.數據結構&算法:算法及性能分析-算法的時間復雜度分析01
以上就是動力節點java培訓機構的小編針對“Java數據結構與算法分析視頻”的內容進行的回答,希望對大家有所幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習