中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

c語言中怎么用遞歸實現二分法查找

小億
146
2023-10-30 12:04:42
欄目: 編程語言

遞歸實現二分法查找的思路如下:

  1. 首先定義一個函數,接收一個有序數組、待查找的元素、數組的起始位置和結束位置作為參數。
  2. 在函數中,首先檢查起始位置是否大于結束位置,如果是,則說明待查找的元素不存在于數組中,返回-1。
  3. 計算數組的中間位置mid,將數組的中間元素與待查找的元素進行比較。
  4. 如果中間元素等于待查找的元素,則說明找到了,返回mid。
  5. 如果中間元素大于待查找的元素,則在左半部分繼續進行二分查找,即遞歸調用函數,起始位置不變,結束位置變為mid-1。
  6. 如果中間元素小于待查找的元素,則在右半部分繼續進行二分查找,即遞歸調用函數,起始位置變為mid+1,結束位置不變。
  7. 重復步驟3至6,直到找到待查找的元素或起始位置大于結束位置。

下面是一個用遞歸實現二分法查找的示例代碼:

#include <stdio.h>

int binarySearch(int arr[], int target, int start, int end) {
    if (start > end) {
        return -1;
    }

    int mid = (start + end) / 2;
    if (arr[mid] == target) {
        return mid;
    } else if (arr[mid] > target) {
        return binarySearch(arr, target, start, mid - 1);
    } else {
        return binarySearch(arr, target, mid + 1, end);
    }
}

int main() {
    int arr[] = {1, 3, 5, 7, 9};
    int target = 5;
    int result = binarySearch(arr, target, 0, sizeof(arr) / sizeof(arr[0]) - 1);
    if (result == -1) {
        printf("Element not found\n");
    } else {
        printf("Element found at index %d\n", result);
    }
    return 0;
}

以上代碼中,我們定義了binarySearch函數來實現二分法查找,然后在main函數中調用該函數進行查找。輸出結果為Element found at index 2,表示在給定數組中找到了待查找的元素,并返回其索引位置為2。

0
松江区| 上杭县| 库伦旗| 安达市| 安丘市| 呈贡县| 江津市| 海盐县| 巫山县| 博客| 盐边县| 盱眙县| 宁夏| 湘西| 兖州市| 马公市| 淮南市| 剑阁县| 无为县| 扎囊县| 洛扎县| 怀来县| 盘山县| 金华市| 马关县| 台北县| 隆化县| 汾阳市| 江口县| 台东市| 镇雄县| 兴化市| 久治县| 宁南县| 石台县| 大厂| 桂阳县| 沭阳县| 紫阳县| 九江县| 甘泉县|