遍历数组

#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;
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容