演算法基礎--04
本篇博文總結的是這本書的第四章的內容。下面開始主要內容知識的總結。
第四章 演算法基礎
首先學習的是演算法中的基礎的基礎:介紹利用陣列進行迴圈處理的演算法。
4.1 迴圈處理和控制變數
記述演算法的時候,迴圈處理是最常用的。利用一個控制變數管理迴圈次數,以期只進行必要次數的處理。
執行步驟如下:
4.2 利用迴圈處理使過程處理通用化
求1~N的總和。執行步驟如下圖
具體展開步驟如下:
4.3 求斐波那契數列
要儲存數列的值的話,最簡單的方法就是使用陣列。
斐波那契數列定義如下:
求解步驟如下:
4.4 求陣列資料的總和
比如:計算考試的總分,計算一個月的總營業額等。
舉例說明:
計算一年的總營業額,計算過程如下:
展開計算結果如下:
4.5 總和÷陣列資料的個數
使用陣列不會明確標明有有效元素的個數N,而有效的陣列元素結尾加上一個空資料來標記有效元素的結束。
舉例如下:
計算全班級分數的總和和平均值:
展開計算過程如下:
4.6 求陣列中的最大值
在求最大值的過程中,首先準備一個儲存最大值的變數MAX,並且把MAX初始化為比物件資料最小值還小的值。然後對資料進行遍歷處理,遍歷完成之後,max儲存的就是最大值。
處理步驟如下:
4.7 求最低分
求最小值的演算法和最大值演算法類似。但也有差異。
儲存最小值的變數的最小值,和陣列元素進行比較的邏輯。
處理步驟如下:
4.8 為陣列元素排名
首先準備一個和儲存資料的陣列長度相等的另外一個數組,並且把所有待排序的陣列中的所有陣列元素在陣列中的排位儲存到新的陣列中。
具體步驟如下:
展開計算過程如下:
4.9 二維陣列操作
統計二維陣列各行總和的操作,“統計某一行的總和的迴圈處理”和“把求列總和的操作分不同的行各自進行的迴圈處理”。
多重迴圈:在一個迴圈內部,再巢狀迴圈。
執行步驟如下:
4.10 對齊單位運算
比如計算時分秒的兩個時間差值。首先要轉換成相同單位進行計算,再然後處理成為對應的格式。
4.11 兩變數值交換
執行步驟如下:
步驟解析:
4.12 求兩個值的最大公約數
最大公約數:
兩個整數共同約數的最大數。
計算方法:
歐幾里得相除法
展開計算步驟如下:
專題4 2038年的時候要留心
現在過去的一些程式時間通常使用4個位元組來表示的。從1970 00:00:00到20380119 03:14:07都可以正常計時,再過一段時間,也就是1s,那麼時間就歸零了。