20172333 2018-2019-1 《程序設計與數據結構》第一週學習總結

學號 2017-2018-2 《程序設計與數據結構》第X周學習總結

教材學習內容總結

第一章

軟件工程

1.軟件工程是一門關於高質量軟件開發的技術和理論的學科。html

2.軟件開發解決的問題爲控制開發過程,實現高質量的軟件。(軟件工程是一門研究用工程化方法構建和維護有效的、實用的和高質量的軟件的學科。)算法

3.軟件質量是軟件符合明確敘述的功能和性能需求、文檔中明確描述的開發標準、以及全部專業開發的軟件都應具備的隱含特徵的程度。數據庫

4.軟件必須有效使用諸如CP處理器時間和內存之類的資源。數據結構

5.質量特徵必須優先考慮,並可能最大化。併發

 

 

數據結構

1.數據結構是計算機存儲、組織數據的方式app

2.數據結構是指相互之間存在一種或多種特定關係的數據元素的集合。ide

3.一般狀況下,精心選擇的數據結構能夠帶來更高的運行或者存儲效率。函數

4.數據結構每每同高效的檢索算法和 索引技術 有關。 (https://blog.csdn.net/load2006/article/details/78841709)性能

程序=數據結構+算法

軟件=程序+軟件工程

第二章

1.算法效率一般用CPU使用時間來表示,算法分析是從效率的角度對算法進行分析,是計算機科學的基礎.學習

2.軟件質量的特徵之一是資源的使用效率。

3.增加函數表示與該問題大小相對應的時間或空間的使用。增加函數表示問題大小與咱們但願最優化的值之間的關係。該函數表示了該算法的時間複雜度或空間複雜度。若是算法的運行效率低。那麼從長遠來講,使用更快的處理器也無濟於事。

4.要分析算法的複雜度,一般須要分析循環的運行。循環的時間複雜度等於循環體的複雜度乘以該循環運行的次數。額分析嵌套循環的複雜度時,必須將內層循環和外層循環都考慮進來。

 

教材學習中的問題和解決過程

  • 問題1:在上面看到了索引技術以後發現本身並無理解索引技術是什麼,因而去百度搜了一下索引技術找到了一篇博客。(https://www.cnblogs.com/zhangxiaolei521/p/6027534.html)
  • 問題1解決方案:

    傳統的數據庫管理系統把全部數據都放在磁盤上進行管理,因此稱做磁盤數據庫(DRDB: Disk-Resident Database)。磁盤數據庫須要頻繁地訪問磁盤來進行數據的操做,磁盤的讀寫速度遠遠小於CPU處理數據的速度,因此磁盤數據庫的瓶頸出如今磁盤讀寫上。
    
      基於此,內存數據庫的概念被提出來了。內存數據庫(MMDB:Main Memory Database,也叫主存數據庫)[1],就是將數據所有或者大部分放在內存中進行操做的數據庫管理系統,對查詢處理、併發控制與恢復的算法和數據結構進行從新設計,以更有效地使用CPU週期和內存。相對於磁盤,內存的數據讀寫速度要高出幾個數量級,將數據保存在內存中相比從磁盤上訪問可以極大地提升應用的性能。

練習

EX 2.1 下列增加函數的階次是多少?
10n^2+100n+1000
    答:O(n^2)
10n^3-7
    答:O(n^3)
n^2logn
    答:O(n^2logn)

EX 2.4 請肯定下面代碼段的增加函數和階次

for(int count = 0; count < n; count ++)
for(int count2 = 0; count2 < n; count2 = count2 + 2)
{
System.out.println(count , count2)
}
    答:內層循環是n/2,外層循環是n,nO(n),因此爲O(n^2)。

EX 2.5 請肯定下面代碼段的增加函數和階次

for(int count = 0 ; count < n ; count++)
for(int count2 = 1 ; count2 < n ; count2 = count2 * 2)
{
System.out.println(count,count2);
}
}
    答:內層循環是log2n,外層循環是n,nO(log2n)因此爲O(nlog2n)。

其餘(感悟、思考等,可選)

在家呆了倆月,雖然有作app但仍是明顯能感受到本身不少東西已經忘記,新的學期應該更加努力彌補上個學期的懶惰。

參考資料

https://blog.csdn.net/load2006/article/details/78841709

https://blog.csdn.net/load2006/article/details/78841709

相關文章
相關標籤/搜索