【c语言】统计一个数字在排序数组中出现的次数
来源:互联网 发布:常用协议端口有多少 编辑:程序博客网 时间:2024/05/20 00:11
// 题目:统计一个数字在排序数组中出现的次数。
// 例如:排序数组{1,2,3,3,3,3,4,5}和数字3,由于3出现了4次,因此输出4
有一种最简单的算法,遍历。但是有比它效率更高的
先看遍历:
#include <stdio.h>#include <assert.h>int num_time(int *arr, int len, int a){int i = 0;int count = 0;assert(arr != NULL);for (; i < len; ++i){if (arr[i] == a)count++;}return count;}int main(){int arr[] = { 1, 2, 3, 3, 3, 3, 4, 5 };int len = sizeof(arr) / sizeof(arr[0]);printf("%d\n", num_time(arr, len, 3));return 0;}
还有一种利用二分查找:
#include <stdio.h>int GetFirstKey(int arr[], int left, int right, int len, int key){int mid;if (left > right){return -1;}mid = left - (left - right) / 2;if (key == arr[mid]){if ((mid > 0 && arr[mid - 1] != key) || mid == 0){return mid;}else{right = mid - 1;}}else if (arr[mid] < key){left = mid + 1;}else{right = mid - 1;}return GetFirstKey(arr, left, right, len, key);}int GetLastKey(int arr[], int left, int right, int len, int key){int mid;if (left > right){return -1;}mid = left - (left - right) / 2;if (key == arr[mid]){if ((mid < len - 1 && arr[mid + 1] != key || mid == len - 1)){return mid;}else{left = mid + 1;}}else if (arr[mid] < key){left = mid + 1;}else{right = mid - 1;}return GetLastKey(arr, left, right, len, key);}int main(){int brr[] = { 1, 2, 3, 3, 3, 3, 4, 5};int len = sizeof(brr) / sizeof(brr[0]);int first = GetFirstKey(brr, 0, len - 1, len - 1, 3);int last = GetLastKey(brr, 0, len - 1, len - 1, 3);printf("%d\n", last - first + 1);return 0;}
0 0
- 【c语言】统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数。
- 统计一个数字在排序数组中出现的次数。
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数。
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数。
- 统计一个数字在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数
- (4)统计一个数字,在排序数组中出现的次数
- 统计一个数字在排序数组中出现的次数(二分法)
- 剑指offer-38 统计一个数字在排序数组中出现的次数
- AfxBeginThread 函数的用法实例讲解
- Python Security 之 端口扫描
- POI 3.8版本导出excel问题
- HDU-1106-排序
- I2C总线-学习总结
- 【c语言】统计一个数字在排序数组中出现的次数
- Java.io.StreamTokenizer的使用小结
- 活动(activity)的生命周期
- HDU - 3001 Travelling (状态压缩)
- NSString 字符串
- 黑马程序员——基础学习(十)API中Arrays、Integer、正则表达式以及日期类的相关应用
- Mex文件编写实例: entropy used in mutual information
- ASP.NETdiv布局
- The C Programming Language Example and Python Implemented