diff --git a/codes/c/chapter_binary_search/binary_search.c b/codes/c/chapter_binary_search/binary_search.c index 88e01867..2ec3a230 100644 --- a/codes/c/chapter_binary_search/binary_search.c +++ b/codes/c/chapter_binary_search/binary_search.c @@ -8,17 +8,17 @@ /* 二分查找(双闭区间) */ int binarySearch(int *nums, int len, int target) { - // 初始化双闭区间 [0, n-1] ,即 left, right 分别指向数组首元素、尾元素 - int left = 0, right = len - 1; - // 循环,当搜索区间为空时跳出(当 left > right 时为空) - while (left <= right) { - int mid = (left + right) / 2; // 计算中点索引 mid - if (nums[mid] < target) // 此情况说明 target 在区间 [mid+1, right] 中 - left = mid + 1; - else if (nums[mid] > target) // 此情况说明 target 在区间 [left, mid-1] 中 - right = mid - 1; + // 初始化双闭区间 [0, n-1] ,即 i, j 分别指向数组首元素、尾元素 + int i = 0, j = len - 1; + // 循环,当搜索区间为空时跳出(当 i > j 时为空) + while (i <= j) { + int m = (i + j) / 2; // 计算中点索引 m + if (nums[m] < target) // 此情况说明 target 在区间 [m+1, j] 中 + i = m + 1; + else if (nums[m] > target) // 此情况说明 target 在区间 [i, m-1] 中 + j = m - 1; else // 找到目标元素,返回其索引 - return mid; + return m; } // 未找到目标元素,返回 -1 return -1; @@ -26,17 +26,17 @@ int binarySearch(int *nums, int len, int target) { /* 二分查找(左闭右开) */ int binarySearch1(int *nums, int len, int target) { - // 初始化左闭右开 [0, n) ,即 left, right 分别指向数组首元素、尾元素+1 - int left = 0, right = len; - // 循环,当搜索区间为空时跳出(当 left = right 时为空) - while (left < right) { - int mid = (left + right) / 2; // 计算中点索引 mid - if (nums[mid] < target) // 此情况说明 target 在区间 [mid+1, right) 中 - left = mid + 1; - else if (nums[mid] > target) // 此情况说明 target 在区间 [left, mid) 中 - right = mid; + // 初始化左闭右开 [0, n) ,即 i, j 分别指向数组首元素、尾元素+1 + int i = 0, j = len; + // 循环,当搜索区间为空时跳出(当 i = j 时为空) + while (i < j) { + int m = (i + j) / 2; // 计算中点索引 m + if (nums[m] < target) // 此情况说明 target 在区间 [m+1, j) 中 + i = m + 1; + else if (nums[m] > target) // 此情况说明 target 在区间 [i, m) 中 + j = m; else // 找到目标元素,返回其索引 - return mid; + return m; } // 未找到目标元素,返回 -1 return -1; diff --git a/codes/c/chapter_stack_and_queue/linkedlist_deque.c b/codes/c/chapter_stack_and_queue/linkedlist_deque.c index fff6d671..170f524e 100644 --- a/codes/c/chapter_stack_and_queue/linkedlist_deque.c +++ b/codes/c/chapter_stack_and_queue/linkedlist_deque.c @@ -37,7 +37,7 @@ struct linkedListDeque { typedef struct linkedListDeque linkedListDeque; -/* 构造j */ +/* 构造函数 */ linkedListDeque *newLinkedListDeque() { linkedListDeque *deque = (linkedListDeque *)malloc(sizeof(linkedListDeque)); deque->front = NULL;