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

来源:互联网 发布:阿里云短信模板 编辑:程序博客网 时间:2024/06/04 21:52
#include<stdio.h>int BinarySearch(int *a,int length,int num,bool isLeft){int left=0,right=length-1;int last=0;while(left<=right){int mid=(left+right)/2;if(a[mid]<num){left=mid+1;}else if(a[mid]>num){right=mid-1;}else {last=mid;if(isLeft){right=mid-1;}else{left=mid+1;}}}return last>0?last:-1;}int main(){int a[]={0,1,2,3,3,3,3,3,3,3,4,5,6,7,13,15};int Lower=BinarySearch(a,sizeof(a)/sizeof(a[0]),3,true);int Upper=BinarySearch(a,sizeof(a)/sizeof(a[0]),3,false);int count=Upper-Lower+1;printf("%d\n",count);return 0;}


原创粉丝点击