Chinaunix首页 | 论坛 | 博客
  • 博客访问: 43397
  • 博文数量: 24
  • 博客积分: 920
  • 博客等级: 准尉
  • 技术积分: 235
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-05 11:10
文章分类
文章存档

2011年(1)

2010年(3)

2009年(20)

我的朋友
最近访客

分类: C/C++

2009-10-21 21:21:28

主要查找算法:顺序查找、折半查找(也叫二分查找)
一、顺序查找,算法时间复杂度是O(n)
#include
int Data[10]={1,3,7,9,10,12,19,21,24,27};
int Binary_Search(int array[],int length,int key)
{
    int i=0;
    do
    {
        if(key==array[i])
        {
            printf("array[%d]=%d\n",i,array[i]);    
            return 1;
        }
        else
            i++;
    }while(i    return 0;
}
int main()
{
    if(Binary_Search(Data,10,12))
    {
        printf("需要的值已经找到!\n");
    }
    else
    {
        printf("需要的值没有找到!\n");
    }
    return 1;
}
二、折半查找,算法时间复杂度是O(log n)
这个算法使用的是已经排好序的数组
#include
int Data[10]={1,3,7,9,10,12,19,21,24,27};
int Binary_Search(int array[],int left,int right,int key)
{
    int middle;
    while(left<=right)
    {
        middle=(left+right)/2;
        if(key        {
            right=middle-1;
        }
        else if(key>array[middle])
        {
            left=middle+1;
        }
        else
        {
            printf("array[%d]=%d\n",middle,array[middle]);
            return 1;
        }
    }
    return 0;
}
int main()
{
    if(Binary_Search(Data,0,9,10))
    {
        printf("需要的值已经找到!\n");
    }
    else
    {
        printf("需要的值没有找到!\n");
    } 
    return 1;
}
阅读(674) | 评论(0) | 转发(0) |
0

上一篇:模块编程(二)

下一篇:排序算法

给主人留下些什么吧!~~