wordpress CMS主题 微信
Home > C++开发 > 通过函数传递查找数组中的元素位置

通过函数传递查找数组中的元素位置

高时银博客 C++开发 点击: 2,083 次 0 0
  • 标签: | |
  • 有时候,我们要查找数组元素在数组中的位置。下面,我们就通过一个实例来实现数组元素位置的查找。这个实例通过递增法2分法两种途径来查找,先通过一个判断函数来判断数组中的元素排序是不是按从小到大的顺序排列的,如果是按顺序排列,就按照2分法来查找,这样查找会快一点;如果不是按顺序排列,就按递增法来查找。如下例:

    int han1(int ,int [],int); //声明递增法函数int han2(int,int [],int); //声明2分法函数

    bool han(int a[],int);  //声明判断函数

    int main()

    {

    int a[]={32,2,5,9,12,34,53,56,76,98};

    if (han(a,10)==true)

    cout<<"二分法查出34在第"<<han2(34,a,10)+1<<"位置"<<endl;

    else

    cout<<"递增法查出34在第"<<han1(34,a,10)+1<<"位置"<<endl;

    return 0;

    }

     

    int han1(int m,int a[],int n)     //递增法

    {

    for (int i=0;i<n;i++)

    if (a[i]==m) return i;

    return n;

    }

     

    int han2(int m,int a[],int n)     //二分法

    {

    int o=0,h=n-1,i;   //o为下标0,h是最大的下标,i是二分后的中间下标;

    i=(0+h)/2;         //中间下标

    while(o<=h){

    if (a[i]==m)       //如果二分后的下标值等于要查打的数m,

    return i;

    if (a[i]<m)

    o=i+1;     //如果小于m,那么第二次二分的起始位置

    else

    h=i-1;     //如果大于m,那么下一次的最大下标

    }

    return n;

    }

     

    bool han(int a[],int n)    //判断是否按顺序排列

    {

    for (int i=0;i<n;i++)

    {

    if (a[i]<a[i-1])

    return false;

    }

    return true;

    }


    文章作者:高时银博客
    本文地址:http://wanlimm.com/77201402161060.html
    版权所有 © 转载时必须以链接形式注明作者和原始出处!

    目前还没有评论。赶快来坐沙发吧。

    发表评论