在排序数组中,找出给定数字的出现次数

在排序数组中,找出给定数字的出现次数,比如 [1, 2, 2, 2, 3] 中2的出现次数是3次。


int find(int *a, int n, int x)
{
    int half;

    if (n <= 0) return 0;
    if (n == 1) return a[0] == x ? 1 : 0;
    if (a[0] > x || a[n - 1] < x) return 0;
    if (a[0] == a[n - 1]) return n;

    half = n / 2;
    if (a[half] > x) return find(a, half, x);
    if (a[half] < x) return find(a + half + 1, n - half - 1, x);
    return 1 + find(a, half, x) + find(a + half + 1, n - half - 1, x);
}


求分析复杂度,求改成非递归

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值