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