美文网首页
遍历数组

遍历数组

作者: 持之以蘅 | 来源:发表于2020-03-04 21:48 被阅读0次
#include <stdio.h>

int search(int key, int a[], int len)
{
    int ret=-1;
    for(int i=0;i<len;i++){
        if(key==a[i])
        {
            ret=i;
            break;
        }
    }
    return ret;
}

int main()
{
    int i;
    int a[]={1,3,2,13,14,17,19};
    int r=search(13,a,sizeof(a)/sizeof(a[0]));
    printf("%d\n",r);
    
    return 0;
}

散列表 hash-table

#include <stdio.h>

int amount[]={1,5,10,25,50};
char *name[]={"penny","nickel","dime","quarter","half-dollar"};

int search(int key, int a[], int len)
{
    int ret=-1;
    for(int i=0;i<len;i++){
        if(key==a[i])
        {
            ret=i;
            break;
        }
    }
    return ret;
}

int main()
{
    int k=10;
    int a[]={1,3,2,13,14,17,19};
    int r=search(k,amount,sizeof(amount)/sizeof(amount[0]));
    //if(r>-1){
      //  printf("%s\n",name[r]);
    //}
    printf("%s\n",name[r]);
    
    return 0;
}

两个数组联合到一起--采用struct结构体的方式

#include <stdio.h>

//int amount[]={1,5,10,25,50};
//char *name[]={"penny","nickel","dime","quarter","half-dollar"};

struct{
    int amount;
    char *name;
    
}coins[]={
    {
        1,"penny"
    },
    {
        5,"nickel"
    },
    {
        10,"dime"
    },
    {
        25,"quarter"
    },
    {
        50,"half-dollar"
    }
};
int search(int key, int a[], int len)
{
    int ret=-1;
    for(int i=0;i<len;i++){
        if(key==a[i])
        {
            ret=i;
            break;
        }
    }
    return ret;
}

int main()
{
    int k=50;
    //int a[]={1,3,2,13,14,17,19};
    //int r=search(25,amount,sizeof(amount)/sizeof(amount[0]));
    for(int i=0;i<sizeof(coins)/sizeof(coins[0]);i++){
        if(k==coins[i].amount){
            printf("%s\n",coins[i].name);
        }
    }
    
    
    return 0;
}

二分搜索
log2n

int search(int key, int a[], int len)
{
   int left=0;
   int right=len-1;
   int ret=-1;
   while(right>left){
       int mid=(left+right)/2;
       if(key==a[mid])
       {
           ret=mid;
           break;
       }
       else if(a[mid]>key)
       {
           right=mid-1;
       }
       else
       {
           left=mid+1;
       }
   }
   return ret;
}

相关文章

  • angular2foreach遍历的几种用法

    遍历简单的数组 遍历数组对象 遍历嵌套数组

  • VS常用四种遍历数组的方法

    目录 for 遍历数组 for in 遍历数组 for of 遍历数组 forEach遍历数组 优缺点总结原文:h...

  • foreach/forin

    1.for/in遍历属性,数组是遍历下标 for/each遍历属性值,数组遍历数组的值

  • JS数组遍历的三种常用方法

    1.数组下标遍历 数组下标遍历是最常用也最普通的数组遍历方式 例如: 2.for in遍历 for in是根据数组...

  • for_of循环

    for(let value of target){}循环遍历 遍历数组 遍历Set 遍历Map 遍历字符串 遍历伪数组

  • PHP中的数组

    数组分类 索引数组 关联数组 数组遍历 传值遍历 传址遍历 数组函数 指针操作函数 current($array)...

  • Go的数组和指针

    一、 定义数组 二、 遍历数组 下标遍历 range遍历(index) range遍历(index,value) ...

  • forEach、for-in与for-of的区别

    遍历数组推荐for of ,遍历对象推荐 for in for in可以用来便利数组和对象 for in在遍历数组...

  • 6.v-for指令

    1.v-for 遍历数组: 遍历对象数组: 遍历对象: 遍历数据 2.key属性:

  • Scala数组操作

    1. 定长数组 2. 变长数组:数组缓冲 3. 遍历数组和数组缓冲 利用下标来进行遍历 不需要数组下标遍历 总结一...

网友评论

      本文标题:遍历数组

      本文链接:https://www.haomeiwen.com/subject/ncgilhtx.html