统计数字在排序数组中出现的次数
来源:互联网 发布:淘宝的信用评价体系 编辑:程序博客网 时间:2024/05/07 14:36
题目:统计一个数字在排序数组中出现的次数。
分析:利用二分查找分别找到第一次出现该数的位置和最后一次出现该数的位置。
#include <stdio.h>int get_first(int a[], int len, int k, int start, int end){if(start > end)//如果没有找到所找数字,返回-1return -1;int mid = (start+end)/2;if(a[mid]==k)//中间的值等于k{if((mid>0 && a[mid-1]!=k) || mid==0)//如果中间的值前面一个值不等于k或者mid=0,那么就找到第一个kreturn mid;elseend = mid - 1;//否则在前半部分找}else if(a[mid] > k)//如果中间值大于k,则在前半部分找end = mid - 1;elsestart = mid + 1;//如果中间值小于k,则在后半部分找return get_first(a,len,k,start,end);}int get_last(int a[], int len, int k, int start, int end){if(start > end)//如果没有找到所找数字,返回-1return -1;int mid = (start+end)/2;if(a[mid]==k)//中间的值等于k{if((mid<len-1 && a[mid+1]!=k) || mid==len-1)//如果中间的值后面一个值不等于k或者mid=len-1,那么就找到最后一个kreturn mid;elsestart = mid + 1;//否则在后半部分找}else if(a[mid] > k)//如果中间值大于k,则在前半部分找end = mid - 1;elsestart = mid + 1;//如果中间值小于k,则在后半部分找return get_last(a,len,k,start,end);}int get_count(int a[], int len, int k){if(a==NULL || len<=0)return -1;int count = 0;int first = get_first(a,len,k,0,len-1);//利用二分查找,找到第一个k出现的位置int last = get_last(a,len,k,0,len-1);//利用二分查找,找到最后一个k出现的位置if(first>-1 && last>-1)count = last - first + 1;//出现的次数就是first,last之间的差值return count;}int main(){int a[] = {1,2,3,3,3,3,4,5};int len = sizeof(a)/sizeof(int);int i,count,num;printf("数组值为:\n");for(i=0;i<len;i++)printf("%d\t",a[i]);printf("\n");printf("输入需要查询的数字:\n");scanf("%d",&num);count = get_count(a,len,num);printf("该数字出现的次数为:%d\n",count);return 0;}
- 统计数字在排序数组中出现的次数
- 统计数字在排序数组中出现的次数
- 【C语言】统计数字在排序数组中出现的次数
- 统计数字在排序数组中出现的次数
- 数组在排序数组中出现的次数
- 【数组8】数字在排序数组中出现的次数
- 【数组4】数字在排序数组中出现的次数
- 数组9:数字在排序数组中出现的次数
- 数字在排序数组中出现的次数(数组)
- 1486. 统计数字(先排序,再遍历数组统计出现次数)
- 在排序数组中,找出给定数字的出现次数
- 在排序数组中,找出给定数字的出现次数
- 在排序数组中,找出给定数字的出现次数
- 统计一个数字在排序数组中出现的次数
- 数字在排序数组中出现的次数
- 数字在排序数组中出现的次数
- 在排序数组中,找出给定数字的出现次数
- 在排序数组中,找出给定数字出现的次数
- TIOBE 2013年6月编程语言排行榜
- 用JQuery添加*号
- poj 1191 棋盘分割
- XML基础
- linux用户态和内核态理解
- 统计数字在排序数组中出现的次数
- 【学习与反解】腾讯微信v4.5.1第一节——目录结构
- android 获取camera状态?
- Maven+SpringMVC整合之helloworld
- DecimalField的使用
- Fedroa 14 环境下安装 ns-2.35
- 图像处理类书籍
- 指针相关。。
- The name 'xxx' does not exist in the current context 錯誤解決方法之一