写一个函数,实现一个整形有序数组的二分查找

//写一个函数,实现一个整形有序数组的二分查找
//找到了就返回下标
//找不到返回-1

#include<stdio.h>
int binary_search(int arr[], int k,int sz)
{
    int left = 0;
    int right = sz-1;
    while (left <= right)
    {
        int mid = (left + right) / 2;
        if (arr[mid] < k)
        {
            left = mid + 1;
        }
        else if (arr[mid] > k)
        {
            right = mid - 1;
        }
        else
        {
            return mid;
        }
    }
    return -1; 
}
int main()
{
    int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
    int k = 7;
    int sz = sizeof(arr) / sizeof(arr[0]);
    int ret = binary_search(arr, k,sz);
    if (-1 == ret)
    {
        printf("找不到\n");
    }
    else
    {
        printf("找到了,下标是%d\n", ret);
    }
    return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以定义一个函数,接受三个参数:有序数组、插入元素、插入位置。具体实现步骤如下: 1. 判断插入位置是否合法,即插入位置是否在数组范围内。 2. 将插入位置后的元素依次后移一位,腾出插入位置。 3. 将插入元素插入到插入位置。 4. 返回插入后的有序数组。 示例代码如下: ```python def insert_sorted_array(arr, num, pos): if pos < or pos > len(arr): return arr arr.append(num) for i in range(len(arr)-1, pos, -1): arr[i], arr[i-1] = arr[i-1], arr[i] return arr ``` 调用示例: ```python arr = [1, 3, 5, 7, 9] num = 4 pos = 2 new_arr = insert_sorted_array(arr, num, pos) print(new_arr) # [1, 3, 4, 5, 7, 9] ``` 以上代码实现了将元素4插入到有序数组[1, 3, 5, 7, 9]的第3个位置,得到新的有序数组[1, 3, 4, 5, 7, 9]。 ### 回答2: 自定义函数实现有序数组进行插入操作的思路如下: 1. 创建一个新的数组,长度为原有数组长度加1,用来存储插入元素后的新数组。 2. 遍历原有数组,逐个比较元素大小: - 若插入元素小于当前元素,将插入元素放入新数组,并将原有数组剩余元素按顺序放入新数组。 - 若插入元素等于当前元素,直接将插入元素放入新数组,并将原有数组剩余元素按顺序放入新数组。 - 若插入元素大于当前元素,将当前元素放入新数组。 3. 若遍历完整个原有数组后,插入元素仍未放入新数组,则将插入元素放入新数组的末尾。 以下是按照以上思路编的代码示例: ```python def insert_into_sorted_array(arr, num): new_arr = [None] * (len(arr) + 1) inserted = False for i in range(len(arr)): if num < arr[i]: new_arr[i] = num for j in range(i, len(arr)): new_arr[j+1] = arr[j] inserted = True break elif num == arr[i]: new_arr[i] = num for j in range(i+1, len(arr)): new_arr[j] = arr[j] inserted = True break else: new_arr[i] = arr[i] if not inserted: new_arr[-1] = num return new_arr ``` 使用时,可以将原有有序数组和要插入的元素作为参数传入该函数,得到插入操作后的新数组。 例如: ```python arr = [1, 3, 5, 7, 9] num = 4 new_arr = insert_into_sorted_array(arr, num) print(new_arr) ``` 输出结果为: ``` [1, 3, 4, 5, 7, 9] ``` 该方法的时间复杂度为O(n),其中n为原有数组的长度。 ### 回答3: 自定义函数实现一个有序数组进行插入操作可以按照以下步骤进行: 1. 定义一个自定义函数,接收两个参数:有序数组arr和待插入的元素target。 2. 使用for循环遍历数组arr,找到待插入元素target应该插入的位置。 - 如果待插入元素target小于当前元素arr[i],则说明待插入位置在当前位置之前。 - 如果待插入元素target大于等于当前元素arr[i],则继续遍历下一个元素。 3. 在找到待插入位置后,使用splice()方法将待插入元素target插入到数组arr的对应位置。 - splice()方法接收三个参数:待插入位置的索引i、待删除的元素个数0,以及待插入的元素target。 4. 返回插入元素后的有序数组arr。 以下是示例代码实现: ```python def insert_into_sorted_array(arr, target): for i in range(len(arr)): if target < arr[i]: arr.insert(i, target) return arr arr.append(target) return arr ``` 假设有序数组arr为[1, 3, 5, 7, 9],待插入元素target为6,则调用上述自定义函数`insert_into_sorted_array(arr, 6)`,将返回[1, 3, 5, 6, 7, 9]作为插入元素后的有序数组

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值