博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
编程算法 - 数字在排序数组中出现的次数 代码(C)
阅读量:5369 次
发布时间:2019-06-15

本文共 1351 字,大约阅读时间需要 4 分钟。

版权声明:本文为博主原创文章,未经博主同意不得转载。 https://blog.csdn.net/u012515223/article/details/36869869

数字在排序数组中出现的次数 代码(C)

本文地址: http://blog.csdn.net/caroline_wendy

题目: 统计一个数字在排序数组中出现的次数.

通过折半查找, 找到首次出现的位置, 再找到末次出现的位置, 相减就可以.

时间复杂度O(logn).

代码:

/* * main.cpp * *  Created on: 2014.6.12 *      Author: Spike *//*eclipse cdt, gcc 4.8.1*/#include 
#include
#include
int GetFirstK (int* data, int length, int k, int start, int end) { if (start > end) return -1; int middleIndex = (start + end)/2; int middleData = data[middleIndex]; if (middleData == k) { if ((middleIndex>0 && data[middleIndex-1]!=k) || middleIndex == 0) return middleIndex; else end = middleIndex-1; } else if (middleData>k) end = middleIndex-1; else start = middleIndex+1; return GetFirstK(data, length, k, start, end);}int GetLastK (int* data, int length, int k, int start, int end) { if (start > end) return -1; int middleIndex = (start+end)/2; int middleData= data[middleIndex]; if (middleData == k) { if ((middleIndex
-1 && last > -1) number = last-first+1; return number;}int main(void){ int data[] = {1, 2, 3, 3, 3, 3, 4, 5}; int k = 3; int result = GetNumberOfK(data, 8, k); printf("result = %d\n", result); return 0;}
输出:

result = 4

转载于:https://www.cnblogs.com/mqxnongmin/p/10560430.html

你可能感兴趣的文章
python序列化和json
查看>>
mongodb
查看>>
网格与无网格
查看>>
SSH-struts2的异常处理
查看>>
《30天自制操作系统》学习笔记--第14天
查看>>
LGPL协议的理解
查看>>
1、Python基础
查看>>
Unity The Tag Attribute Matching Rule
查看>>
试着理解下kvm
查看>>
WebService学习总结(二)--使用JDK开发WebService
查看>>
Tizen参考手机RD-210和RD-PQ
查看>>
竞价广告系统-位置拍卖理论
查看>>
策略模式 C#
查看>>
[模板]树状数组
查看>>
[HDU 6447][2018CCPC网络选拔赛 1010][YJJ's Salesman][离散化+线段树+DP]
查看>>
设计模式学习的好方法
查看>>
感谢Leslie Ma
查看>>
几种排序方法
查看>>
查看数据库各表的信息
查看>>
第一阶段测试题
查看>>