• wordpress CMS主题:ssmay主题wordpress CMS主题:ssmay主题
  • 首页 > C++开发 > 通过函数传递查找数组中的元素位置

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

    作者: 分类:C++开发 点击: 3,038 次
    wordpress CMS主题:ssmay主题

      有时候,我们要查找数组元素在数组中的位置。下面,我们就通过一个实例来实现数组元素位置的查找。这个实例通过递增法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;

      }



      QQ二维码

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

    上一篇:
    下一篇:
    wordpress CMS主题:ssmay主题

    或许你会感兴趣的文章:

    发表评论

    电子邮件地址不会被公开。 必填项已用*标注

    This site uses Akismet to reduce spam. Learn how your comment data is processed.