码迷,mamicode.com
首页 > 其他好文 > 详细

5.2 简单查找

时间:2016-07-19 09:22:35      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:

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 }

 

5.2 简单查找

标签:

原文地址:http://www.cnblogs.com/wozixiaoyao/p/5683170.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!