顺序查找 sequential find

#include <stdio.h>

#include <stdlib.h>

typedef int KeyType;

struct ElemType{

    int key;

};

int find_seq(struct ElemType arr[],int n,KeyType key){

    int i=0;

    for(;i<n;i++){

        if(arr[i].key==key)return i;

        printf("check %d\n",arr[i]);

    }

    return -1;

}

//较好的提高,for循环里只有一个判断,注意数据不能越界

int find_seq_improved(struct ElemType arr[],int n,KeyType key){

    int i=0;

    arr[n].key=key; //设置岗哨

    for(;;i++){

        if(arr[i].key==key) break;

        printf("check %d\n",arr[i]);

    }

    if(i<n)return i;

    else return -1;

}

int main()

{

    struct ElemType arr[10];

    arr[0].key=0;

    arr[1].key=11;

    arr[2].key=22;

    arr[3].key=33;

    arr[4].key=44;

    arr[5].key=55;

    int idx=find_seq(arr,6,554);

    printf("idx=%d\n",idx);



    int idx1=find_seq_improved(arr,6,554);

    printf("idx=%d\n",idx1);



    return 0;

}

  

你可能感兴趣的:(find)