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

来源:互联网 发布:有话好好说 知乎 编辑:程序博客网 时间:2024/04/29 09:17

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

比如 [1, 2, 2, 2, 3] 中2的出现次数是3次。

乍一看,挺简单的,遍历一遍就搞定了。但是在细想一下,要是数组时乱序的还好,但是这边人家数组都给排序好了,要是再用直接遍历的方法,估计情况不会很乐观,为了获得更好的时间效率,我们可以考虑折半查找。

PS:可能看我博客的会发现,我目前写的一些东西都很稀疏平常的,确实,笔者实力还很烂,只能挑一些小虾米做,以后升级了会增加难度的。

如有错误,还希望各位道友批评指正,万分感谢。

环境 win8,vs2012

#include<stdio.h>#include<string.h>#include<stdlib.h>#define LENGTH 6/*int getCount( int arr[] ,int num, int n){int count=0;for(int i=0;i<n;i++){if(arr[i]==num){count++;}}return count;}*/int count=0;void  getCount( int arr[], int num , int begin, int end){if(begin>end){return ;}int middle=(begin+end)/2;if(arr[middle]==num){count++;getCount(arr, num ,begin , middle-1);getCount(arr, num ,middle+1 , end);}else if( arr[middle] <num){getCount(arr, num, middle+1, end);}else{getCount(arr, num , begin, middle-1);}}int main(){int arr[LENGTH]={1,2,2,2,3,4};//printf("count = %d \n",getCount( arr, 2, LENGTH));getCount(arr,2,0 ,LENGTH-1);printf("count = %d\n",count);getchar();return 0;}


0 0
原创粉丝点击