查找算法

来源:互联网 发布:数据录入平台 编辑:程序博客网 时间:2024/06/13 05:00

在查找算法中,有几种最为常见,分别是顺序查找,二分查找,分块查找,插补查找,二叉树查找。

顺序查找

顺序查找最为简单,就是一个一个的进行比较,找到匹配的那个。时间复杂度为O(n)。

int Find::orderFind(int *a,int len, int key){    for (int i = 0; i < len;i++){        if (a[i] == key)        {            return i;        }    }    //表示没查到    return -1;}

二分查找

二分查找对排序过后的数据的算法有很好的结果,通过比较中间的那个数据和当前要查找的数据之间的大小关系,来确定要查找的数据可能位于哪个位置,例如,第一次查找过后,如果相等,就表示找到,否则比较大小,如果比查找的要小,那么在第一部分,否则在第二部分,然后,在对应的部分里面继续寻找,有两种实现方式:
第一种方法:递归调用

int Find::BinaryFind(int*a, int low, int hight, int key){    int mid;    if (low > hight)        return -1;    mid = (hight +low) / 2;    if (a[mid]==key)    {        return mid;    }else if (a[mid]<key)    {        return BinaryFind(a, mid + 1, hight,key);    }    else{        return BinaryFind(a, low, mid - 1, key);    }}

第二种方法:通过while循环来实现

int Find::BinaryFind2(int*a, int len, int key){    int low, hight, mid;    low = 0;    hight = len - 1;    while (low<=hight)    {        mid = (low + hight) / 2;        if (a[mid] == key){            return mid;        } else if (a[mid]<key){            low = mid + 1;        }else{            hight = mid - 1;        }    }    return -1;}

二叉树查找

对于二叉树的查找算法来说,最为重要的是建立二叉树,建立二叉树的原则是左结点<根结点<右结点

0 0
原创粉丝点击