编辑代码

#include <stdio.h>

// 插入排序
void insertionSort(int arr[], int n) {
    int i, key, j;
    for (i = 1; i < n; i++) {
        key = arr[i];
        j = i - 1;

        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j = j - 1;
        }
        arr[j + 1] = key;
    }
}

// 折半查找
int binarySearch(int arr[], int low, int high, int target) {
    while (low <= high) {
        int mid = low + (high - low) / 2;
        
        if (arr[mid] == target)
            return mid;

        if (arr[mid] < target)
            low = mid + 1;
        else
            high = mid - 1;
    }

    return -1;
}

int main() {
    int arr[] = {12, 11, 13, 5, 6};
    int n = sizeof(arr) / sizeof(arr[0]);

    // 使用插入排序
    insertionSort(arr, n);

    // 输出排序后的数组
    printf("Sorted array: \n");
    for (int i = 0; i < n; i++)
        printf("%d ", arr[i]);
    printf("\n");

    // 使用折半查找
    int target = 13;
    int result = binarySearch(arr, 0, n - 1, target);

    // 输出查找结果
    if (result == -1)
        printf("Element %d not found\n", target);
    else
        printf("Element %d found at index %d\n", target, result);

    return 0;
}