int find(int array[], int length, int value) {
if (NULL == array || 0 == length)
return FALSE; // 參數非法
int index = 0;
return index; // 佔位
}
測試用例同步編寫:
static void test1() {
int array[10] = {0};
assert(FALSE == find(NULL, 10, 10));
assert(FALSE == find(array, 0, 10));
}
int find(int array[], int length, int value) {
if (NULL == array || 0 == length)
return FALSE;
for (int index = 0; index < length; ++index) {
if (value == array[index])
return index; // 找到,回傳索引
}
return FALSE; // 未找到
}
測試用例擴充:
static void test2() {
int array[10] = {1, 2};
assert(0 == find(array, 10, 1)); // 找到首項
assert(FALSE == find(array, 10, 10)); // 未找到
}
int find(int array[], int length, int value) {
if (NULL == array || 0 == length)
return FALSE;
int* start = array;
int* end = array + length;
while (start < end) {
if (value == *start)
return (start - array) / sizeof(int);
++start;
}
return FALSE;
}
template <typename T>
int find(T array[], int length, T value) {
if (NULL == array || 0 == length)
return FALSE;
T* start = array;
T* end = array + length;
while (start < end) {
if (value == *start)
return (start - array) / sizeof(T);
++start;
}
return FALSE;
}
測試用例同步泛型化:assert(0 == find<int>(array, 10, 1));
不斷辨認錯誤、發現錯誤,才能不斷提升編程能力與業務水平。讓我們一起一步步寫出健壯的演算法。