亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

c語言折半查找算法怎么實現

小億
85
2024-01-04 16:17:42
欄目: 編程語言

折半查找也稱為二分查找,它要求被查找的數組是有序的。

實現折半查找算法可以按照以下步驟:

  1. 定義一個函數,接受一個有序數組和要查找的目標元素作為參數。
  2. 初始化兩個指針,一個指向數組的起始位置,一個指向數組的結束位置。
  3. 使用一個循環,判斷起始位置是否小于等于結束位置。
  4. 在循環中,將中間位置的索引計算為起始位置與結束位置之和的一半。
  5. 比較中間位置的元素與目標元素的大小:
    • 如果中間位置的元素等于目標元素,返回中間位置的索引。
    • 如果中間位置的元素大于目標元素,將結束位置指針移到中間位置的前一個位置。
    • 如果中間位置的元素小于目標元素,將起始位置指針移到中間位置的后一個位置。
  6. 如果循環結束沒有找到目標元素,返回-1表示查找失敗。

下面是一個示例代碼:

#include <stdio.h>

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

int main() {
    int arr[] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20};
    int target = 12;
    int n = sizeof(arr) / sizeof(arr[0]);
    int result = binarySearch(arr, target, 0, n - 1);
    
    if (result == -1) {
        printf("Element not found\n");
    } else {
        printf("Element found at index %d\n", result);
    }
    
    return 0;
}

以上代碼在一個有序數組中查找目標元素12,并輸出其索引。如果目標元素存在于數組中,則輸出對應索引;否則輸出"Element not found"。

0
武定县| 赣榆县| 三河市| 武冈市| 桂阳县| 车致| 灵山县| 梁山县| 香河县| 当雄县| 太仆寺旗| 遂宁市| 博野县| 樟树市| 景洪市| 贡嘎县| 芷江| 佛学| 荃湾区| 洮南市| 阆中市| 汤阴县| 西林县| 长沙市| 淮南市| 鄂尔多斯市| 两当县| 隆安县| 南召县| 宁河县| 达孜县| 阜宁县| 福贡县| 诸暨市| 通江县| 铜山县| 丽江市| 专栏| 夏津县| 武定县| 兴和县|