數組方式:
當i=1時, f(m,k,i)=(m+k−1)
當i!=1時,f(m,k,i)=(f(m−1,k,i−1)+k)
連結清單方式:
假設兩個棧a和b,且都為空。棧a提供<code>push()</code>功能,棧b提供<code>pop()</code>功能。
入隊列:入棧a。- 出隊列:
如果棧b不為空,直接彈出b的元素。
如果棧b為空,則依次彈出棧a的元素并壓入棧b中,再彈出b中的元素。
經常需要操作的記憶體可分為以下幾個類别:
棧區:由編譯器自動配置設定和釋放,存放函數的參數值、局部變量的值等。
堆區:一般由程式員配置設定和釋放,若程式員不釋放,程式結束時可能由作業系統回收。(它與資料結構中的堆是兩回事,配置設定方式類似于連結清單)
全局區(靜态區):全局變量和靜态變量的存儲是放在一塊的,初始化的全局變量和靜态變量在一塊區域,未初始化的全局變量和未初始化的靜态變量在相鄰的另一塊區域,程式結束後由系統釋放。
文字常量區:常量字元串就是放在這裡的。
程式代碼區:存放函數體的二進制代碼。
heap是堆,stack是棧。
stack的空間由作業系統自動配置設定/釋放,heap上的空間手動配置設定/釋放。
stack的空間有限,heap有很大的自由存儲區。
c中的malloc函數配置設定的記憶體空間即在堆上,c++對應的new操作符。
程式在編譯期對變量和函數配置設定記憶體都是在棧上進行,且程式運作過程中函數調用時參數的傳遞也在棧上進行。
stack的存取效率較快。
stack申請效率比較快,heap比較慢,而且容易産生碎片,不過用起來友善。
4∗n−(n−1)=3n+1
排序是否穩定:待排序檔案中,具有相同關鍵字的記錄,經過排序後記錄之間的相對次序是否保持不變。
内部排序:整個檔案都是放在記憶體中處理,排序時不涉及資料的内、外存交換。
外部排序:排序過程中要涉及内、外存交換。
分治法:将原問題分解為若幹個規模更小但結構與原問題相似的子問題。遞歸的解決這些子問題,然後将這些子問題的解組合為原問題的解。
去掉不必要的安全檢查,可以提高性能。
使用<code>strncpy()</code>需要手動在最後加上<code>'\0'</code>。
輸出為:123456789, 5789
如果交換d和s的定義順序,則輸出結果為123456789, 123456789
指在程式的執行過程中動态的配置設定或者回收存儲空間的記憶體配置設定方法。相對于靜态記憶體配置設定的特點:
1. 不需要預先配置設定存儲空間
2. 配置設定的空間可以根據程式的需要擴大和縮小
void *malloc(unsigned int size);
void free(void *p);
代碼1:
代碼2:
代碼3:
自動化測試可以讓測試人員從枯燥無味的手工重複性測試中解放出來,并且提高工作效率,通過自動化測試結果來分析功能和性能上的缺陷。
一個測試結束的标準可以檢視已送出的bug是否已經全部解決并已驗證關閉,一般來說,bug驗證率在95%以上,并且沒有大的影響功能的bug處于未解決狀态,就可以測試通過。
在一個測試計劃中可以包含需要測試的産品的特點和主要功能子產品,列出需要測試的功能點,并标明側重點;測試的政策和記錄(測試工具的确認,測試用例等文檔模闆,測試方法的确定);測試資源配置(确定測試每一階段的任務和所需資源)。
功能測試主要是黑盒測試,由測試人員進行,主要驗證産品是否符合需求設計的要求;可用性測試主要是由使用者(或者測試人員模拟使用者行為)來進行的測試,主要是對産品的易用性進行測試,包括有效性(effectiveness)、效率(efficiency)和使用者主觀滿意度(satisfication)。其中有效性指使用者完成特定任務和達到特定目标時所具有的正确和完整程度;效率指使用者完成任務的正确和完整程度與所使用資源(如時間)之間的比率;滿意度指使用者在使用産品過程中所感受到的主觀滿意和接受程度。
白盒測試有幾種測試方法:條件覆寫、路徑覆寫、語句覆寫、分支覆寫。其中分支覆寫又稱判定覆寫,使得程式中每個判斷的取真分支和取假分支至少經曆一次,即判斷的真假均曾被滿足。