| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1028 人关注过本帖
标题:查找的几种简单算法(请指正)
取消只看楼主 加入收藏
新浪
Rank: 3Rank: 3
来 自:水星
等 级:论坛游侠
威 望:1
帖 子:770
专家分:167
注 册:2008-6-10
结帖率:91.67%
收藏
 问题点数:0 回复次数:2 
查找的几种简单算法(请指正)
从键盘终端输入10个数存入一维数组
随意输入1个数    在数组中查找是否存在该数

[[it] 本帖最后由 新浪 于 2008-11-15 14:32 编辑 [/it]]
搜索更多相关主题的帖子: 算法 
2008-11-15 12:11
新浪
Rank: 3Rank: 3
来 自:水星
等 级:论坛游侠
威 望:1
帖 子:770
专家分:167
注 册:2008-6-10
收藏
得分:0 
占个位
程序代码:
#include <stdlib.h> 
#include <stdio.h> 
#define NELEMS(arr) (sizeof(arr) / sizeof(arr[0])) 
int numeric (const int *p1, const int *p2) 
{ 
return(*p1 - *p2); 
} 


void Bsearch(int a[],int num) 
{ 
  int *itemptr; 

/* The cast of (int(*)(const void *,const void*)) 
is needed to avoid a type mismatch error at 
compile time */ 
  itemptr = bsearch (&num, a, NELEMS(a), sizeof(int), (int(*)(const void *,const void *))numeric); 
  if (!itemptr) 
     printf("%d is in the table.\n",num); 
  else 
    printf("%d isn't in the table.\n",num); 


} 



void BinarySearch(int a[],int v,int r)
{
  int m;
  int l=0;
  r=r-1;
  while(l<=r)
  {
    m=(l+r)/2;
    if(v==a[m])
    {
        printf("Found! The search number's location is: %d\n",m);
        return 0;
    }
    if(v<a[m])
      r=m-1;
    else
      l=m+1;
  }
  printf("Not found!\n");
  
}

void EnhancedSqSearch(int a[],int v,int r)
{
    int i=0;
    a[10]=v;
    while(a[i]!=v)
        i++;
    if(i<r)
        printf("Found! The search number's location is: %d\n",i);
    else
       printf("Not found!\n");
  
}

void SequentialSearch(int a[],int v,int r)
{
  int i;
  for(i=0;i<r;i++)
  {
    if(v==a[i])
    {
        printf("Found! The search number's location is: %d\n",i);
        return 0;
    }
    
  }
  printf("Not found!\n");
   
}

main()
{
    int a[11];
    int i,num;
    printf("Please input ten number: \n");
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);
    printf("Please input your search number: \n");
    scanf("%d",&num);
    printf("1):********\n");
    SequentialSearch(a,num,10);//顺序查找

    printf("2):********\n");
    EnhancedSqSearch(a,num,10);//增强顺序查找

    printf("3):********\n");
    BinarySearch(a,num,10);//二分查找

    printf("4):********\n");
    Bsearch(a,num);//库函数 Bsearch  只知道有这个东西  我不熟悉

}


[[it] 本帖最后由 新浪 于 2008-11-15 14:21 编辑 [/it]]

天下皆醒,唯我独醉;  天下皆白,唯我独黑
2008-11-15 12:25
新浪
Rank: 3Rank: 3
来 自:水星
等 级:论坛游侠
威 望:1
帖 子:770
专家分:167
注 册:2008-6-10
收藏
得分:0 
代码帖出来了

比较短  是背诵的佳品

天下皆醒,唯我独醉;  天下皆白,唯我独黑
2008-11-15 14:22
快速回复:查找的几种简单算法(请指正)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.040741 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved