您的位置:首页 > 其它

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

2014-04-11 18:31 218 查看
在排序数组中,找出给定数字的出现次数,比如 [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);
}


求分析复杂度,求改成非递归
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐