码迷,mamicode.com
首页 > 移动开发 > 详细

小米13笔试编程题 2

时间:2014-07-28 14:57:53      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:style   blog   java   color   os   io   art   代码   

有一个数组(非递减),旋转了不知道多少个位,在该数组中找一个数的下标。写出代码(用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;
}

 

小米13笔试编程题 2,布布扣,bubuko.com

小米13笔试编程题 2

标签:style   blog   java   color   os   io   art   代码   

原文地址:http://www.cnblogs.com/xsfantasy/p/3872682.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!