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

来源:互联网 发布:js事件流模型 编辑:程序博客网 时间:2024/06/05 07:12


如何在排序数组中,找出给定数字出现的次数 ?  例如,数组 [1, 2, 2, 2, 3]中2的出现次数为 3


/* 如何在排序数组中,找出给定数字出现的次数 */int findItemInorderArray(int *arr, int key, int start, int end){assert(arr);assert(start>=0 && end>=0);if (start>end) return 0; //该关键字不存在static int counter = 0; // 统计关键字key出现的次数int index;index = (start+end)/2;int left,right; //当找到第一个关键字的位置后,从该位置向左(left),向右(right)查找该关键字//因为是有序数组,两边一旦遇到不相等的元素,查找终止left = right = index;if (key == arr[index]) {counter++;while ((--left) >= start && arr[left]==key)counter++;while ((++right) <= end && arr[right]==key)counter++;return counter;}else if (key > arr[index]) return findItemInorderArray(arr, key, index+1, end);else return findItemInorderArray(arr, key, start, index-1);}


0 0