java數據結構知識點自我總結

課前複習:
二分查找 時間複雜度(O(N))
空間複雜度:範圍最大的長度
複雜度:粗略衡量算法好壞的刻度尺(工具)
兩個維度:快慢 時間複雜度(重點)
使用空間的狀況 空間複雜度
時間複雜度:直接利用容許時間衡量不現實,測試環境多變,很差控制變量
前提:若是指定cpu的狀況下,單位時間內運行的基本指令個數是固定的
若是一個算法須要的指令比另外一個算法須要的指令個數小,就能夠推出算法A運行的時間更快
前提:算法計算的快慢和輸入的數據的規模是有關係的
粗略計算算法的快慢:
n:數據的規模
f(n): n的數據規模狀況下,須要的大概基本指令個數
引入大O漸進表示法:
1.只保留最高次項
2.保留的最高次項係數化爲1
f(n)=2n+10
表示爲O(n)
算法的快慢還和最好的狀況,平均的狀況,最好的狀況
通常優先關注最壞的狀況,其次平均狀況,最好狀況關注比較少算法

時間複雜度是o(log(n))
n 1000 1000 000 10億
o(n) 1000 1000 000 10億
o(log(n)) 10 20 30
常見的時間複雜度o(1) o(log(n)) 0(n) o(n*log(n)) o(n^2)數組

空間複雜度:
o(f(n)) 在輸入n規模下的狀況下,算法須要的最大的空間狀況
1‘開闢數組
2.畫調用棧ide

考慮 數組容量(array.length)和已有數據個數(size)的關係
1.容量是夠用的size<array.length
2.容量不夠用
搬家(1.五、2倍)
int newCapacity=array.length*2;
1.找新家;
int[] newArray=new int[newCapacity]
2.搬家
for(int i=0;i<size;i++){
newArray[i]=array[i];
}
3.發朋友圈
this.array=newArray;
4.老房子退掉
原來的數組對象,沒有引用指向,變成垃圾
擴容的空間越小,空間的浪費越小
擴容的空間越大,須要擴容的頻率越小
經驗值1.5或者2倍工具

相關文章
相關標籤/搜索