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