标签:
5-1 SeqSearch.c
1 #include <stdio.h> 2 #define ARRAYLEN 8 3 int source[]={69,65,90,37,92,6,28,54}; 4 5 int SeqSearch(int s[],int n,int key) 6 { 7 int i; 8 for(i=0;i<n && s[i]!=key;i++) 9 ; 10 if(i<n) 11 return i; 12 else 13 return -1; 14 } 15 16 int main() 17 { 18 int key,i,pos; 19 printf("请输入关键字:"); 20 scanf("%d",&key); 21 pos=SeqSearch(source,ARRAYLEN,key); 22 printf("原数据表:"); 23 for(i=0;i<ARRAYLEN;i++) 24 printf("%d ",source[i]); 25 printf("\n"); 26 if(pos>=0) 27 printf("查找成功,该关键字位于数组的第%d个位置。\n",pos); 28 else 29 printf("查找失败!\n"); 30 getch(); 31 return 0; 32 }
5-2 SeqSearch1.c
#include <stdio.h> #define ARRAYLEN 8 int source[ARRAYLEN+1]={69,65,90,37,92,6,28,54}; int SeqSearch(int s[],int n,int key) { int i; for(i=0;s[i]!=key;i++) ; if(i<n) return i; else return -1; } int main() { int key,i,pos; printf("请输入关键字:"); scanf("%d",&key); source[ARRAYLEN]=key; //保存key值到最后一个元素 pos=SeqSearch(source,ARRAYLEN,key); printf("原数据表:"); for(i=0;i<ARRAYLEN;i++) printf("%d ",source[i]); printf("\n"); if(pos>=0) printf("查找成功,该关键字位于数组的第%d个位置。\n",pos); else printf("查找失败!\n"); getch(); return 0; }
5-3 BinarySearch.c
1 #include <stdio.h> 2 #define ARRAYLEN 10 3 int source[]={6,12,28,37,54,65,69,83,90,92}; 4 5 int BinarySearch(int s[],int n,int key) 6 { 7 int low,high,mid; 8 low=0; 9 high=n-1; 10 while(low<=high) //查找范围含含至少一个元素 11 { 12 mid=(low+high)/2; //计算中间位置序号 13 if(s[mid]==key) //中间元素与关键字相等 14 return mid; //返回序号 15 else if(s[mid]>key) //中间元素大于关键字 16 high=mid-1; //重定义查找范围 17 else //中间元素小于关键字 18 low=mid+1; //重定义查找范围 19 } 20 return -1; //返回查找失败 21 } 22 23 int main() 24 { 25 int key,i,pos; 26 printf("请输入关键字:"); 27 scanf("%d",&key); 28 pos=BinarySearch(source,ARRAYLEN,key); 29 printf("原数据表:"); 30 for(i=0;i<ARRAYLEN;i++) 31 printf("%d ",source[i]); 32 printf("\n"); 33 if(pos>=0) 34 printf("查找成功,该关键字位于数组的第%d个位置。\n",pos); 35 else 36 printf("查找失败!\n"); 37 getch(); 38 return 0; 39 }
标签:
原文地址:http://www.cnblogs.com/wozixiaoyao/p/5683170.html