首页 > 代码库 > 小米13笔试编程题 2
小米13笔试编程题 2
有一个数组(非递减),旋转了不知道多少个位,在该数组中找一个数的下标。写出代码(用C/C++或者java)
并分析时间空间复杂度,考虑效率(很重要)。
eg:数组 [6,7,1,2,3,4,4] 找3,返回4;
函数原型
C/C++:
int find(int * a,int n,int count) count为a数组长度;n为要查找的数
Java:
int find(int []a,int n)
方法:二分查找,插值查找,Fibonacci查找
二分查找如下:
#include<iostream>;using namespace std;int find(int *a,int n,int count){ int end=n-1,start=0; while(start<=end){ int min=(end+start)/2; if(a[min]<n) start=min+1; else if(a[min]>n) end=min-1; else return min; }}int main(){ int a[]={1,2,3,4,5,6,7,8}; int b=find(a,6,8); cout<<b<<endl;}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。