迭代章節練習
修改測試**,以便呼叫者可以指定字元重複的次數,然後修復**
寫乙個 examplerepeat 來完善你的函式文件
注意上述**中最後一行// ouput: aaaaaaaaaa
,
看一下strings包(**上的連線需要連線外網,這裡提供的是中文版**)。找到你認為可能有用的函式,並對它們編寫一些測試。投入時間學習標準庫會慢慢得到回報。
測試**及結果如下歸併排序的演算法實現
tdd流程寫乙個測試用例並執行測試歸併排序(merge sort)
是建立在歸併操作上的一種有效,穩定的排序演算法,該演算法是採用分治法的乙個非常典型的應用。將已有序的子串行合併,得到完全有序的序列;即先使每個子串行有序,再使子串行段間有序。若將兩個有序表合併成乙個有序表,稱為二路歸併。package main
import
"testing"
var arr =
intfunc
testmergesort
(t *testing.t)
flag :=
true
for i :=
0; i <
len(arr)
; i++
}if flag ==
false
t.errorf
("but got"
)for i :=
0; i <
len(arr)
; i++
}}
為了執行測試,需要先新增乙個空的mergesort
函式(根據tdd的步驟等下再實現)package main
func
mergesort
(arr [
]int)[
]int
}
結果如下實現能通過測試的程式並測試package main
func
mergesort
(arr [
]int)[
]int
i :=
len(arr)/2
left :=
mergesort
(arr[
0:i]
) right :=
mergesort
(arr[i:])
result :=
merge
(left, right)
return result
}func
merge
(left, right [
]int)[
]int
result =
(result, left[m]
) m++
} result =
(result, right[n:
]...
) result =
(result, left[m:
]...
)return result
}func
main()
result :=
mergesort
(arr)
fmt.
println
(result)
}
先用main函式檢測輸出,結果正確如下重構、修改**然後將main函式注釋,執行測試結果如下
由於基準測試mergesort
演算法較為常用且簡單,已經形成一種相對固定的套路,基本沒有需要重構和修改的地方,在本文中僅作注釋以實現這個步驟在mergesort_test.go
的基礎上新增如下**func
benchmarkmergesort
(b *testing.b)
mergesort
(arrt)
}}
結果如下圖**傳送門參考資料深度解讀 - tddgo語言中文文件
往屆部落格參考
go語言benchmark
go語言benchmark詳解
C語言歸併排序
描述 給定乙個數列,用歸併排序演算法把它排成公升序。輸入 第一行是乙個整數n n不大於10000 表示要排序的數的個數 下面一行是用空格隔開的n個整數。輸出 輸出排序後的數列,每個數字佔一行。歸併排序有兩個關鍵點 1.將兩個已經排好序的序列進行合併。歸併2個有序序列為1個有序序列 void merg...
C語言 歸併排序
歸併是將兩個或多個存序記錄序列合併成乙個有序序列。一般來說,一次對幾個有序記錄進行歸併,就稱為幾路歸併排序。以二路歸併排序為例,其基本方法如下 1 將 n 個記錄看成是 n 個長度為 1 的有序子表。2 將兩兩相鄰時有序序列進行歸併。3 重複執行步驟 2 直到歸併成乙個長度為 n 的有序表 如下所示...
C語言歸併排序
include include description 歸併排序 author qingq datetime 2021年3月8日20點03分 int length 待排序陣列長度 int a 待排序陣列 int b 輔助陣列b void mergesort int a,int low,int hig...