顺序查找 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;
}

  

posted @ 2011-10-10 21:08  庚武  Views(271)  Comments(0Edit  收藏  举报