查找笔记

原创 2016年05月31日 17:14:55

查找笔记
自己总结外加搬运,主要是自己复习用,如有雷同,望告知~!

1


普通数据查找,对于简单的查找,假设所有数据不重复,所要查找的数据位置不确定,所以要将数据进行遍历才能找到对应的数据。

int find(int array[], int  length, int value)  
{  
    if(NULL == array || 0 == length)  
        return -1;  

    for(int index = 0; index < length; index++){  
        if(value == array[index])  
            return index;  
        }  
    return 

最段时间为O(1),最大为O(n),平均为(1+n)/2。

2

日常中,数据都是有序的,对一个有序的数组,二分查找是最好的方法。
这里就要在查找钱先调用排序算法。

int binary_sort(int array[], int length, int value)  
{  
    if(NULL == array || 0 == length)  
        return -1;  

    int start = 0;  
    int end = length -1;  

    while(start <= end){  

        int middle = start + ((end - start) >> 1);  
        if(value == array[middle])  
            return middle;  
        else if(value > array[middle]){  
            start = middle + 1;  
        }else{  
            end = middle -1;  
        }  
    }  

    return -1

3排序二叉树

对于指针类型的数据,定义排序二叉树,每一个节点记录一个数据同时左分支的数据<根节点<右分支的数据。
链表实现:

#include <stdio.h>
#include <iostream>

using namespace std;

 struct node
{
    int data;
    struct node * lchild;
    struct node * rchild;
};

void Init(node *t)
{
    t = NULL;
}

node * Insert(node *t, int key)
{
    if (t == NULL)
    {
        node * p;
        p = (node *)new(node);
        p->data = key;
        p->lchild = NULL;
        p->rchild = NULL;
        t = p;
    }
    else
    {
        if (key < t->data)
            t->lchild = Insert(t->lchild, key);
        else
            t->rchild = Insert(t->rchild, key);
    }
    return t;    //important!
}

node * creat(node *t)
{
    int i, n, key;
    cout << "要输入多少个数据:";
    cin >> n;
    cout << "输入数据:";
    for (i = 0; i < n; i++)
    {
        cin >> key;
        t = Insert(t, key);
    }
    return t;
}

void InOrder(node * t)        //中序遍历输3出
{
    if (t != NULL)
    {
        InOrder(t->lchild);
        cout << t->data << " ";
        InOrder(t->rchild);
    }
}

int main()
{
    node * t = NULL;
    t = creat(t);
    InOrder(t);
    return 0;
}

4

哈希表 在处理中等规模的数据是很有效

数据结构笔记整理第8章:查找

第8章 查找本章内容本章主要介绍多种查找的算法,包括它们的查找过程、查找复杂度以及实现等等,本章在考研中仍然是重点内容。...
  • lby0910
  • lby0910
  • 2016年06月07日 22:20
  • 298

数据结构之查找算法总结笔记

查找算法    一、查找的基本概念 查找,也可称检索,是在大量的数据元素中找到某个特定的数据元素而进行的工作。查找是一种操作。   二、顺序查找 针对无序序列的一种最简单的查找方式。 时...
  • bravegogo
  • bravegogo
  • 2016年03月20日 16:39
  • 447

Java8学习笔记之Stream API

摘要: 原创出处 http://peijie2016.oschina.io 欢迎转载,保留摘要,谢谢! Stream是Java8引入的一个重度使用lambda表达式的API。 Stream可以用流的...
  • u011851478
  • u011851478
  • 2017年04月26日 13:28
  • 497

【笔记】查找

查找 本章重点: 1、顺序表的查找 2、有序表的查找:折半查找法 3、二叉排序树及其查找过程(动态) 4、二叉排序树的插入(动态) 5、平衡二叉树、B-和B+树的结构 6、哈希表即哈希函...
  • qq_25008053
  • qq_25008053
  • 2015年01月03日 01:32
  • 48

LCNN论文阅读笔记

卷积神经网络因为参数越来越多对计算机硬件要求越来越高,因此需要更高效的神经网络算法。我认为作者的切入点是CNN有很多相互关联的参数,进而充分利用参数之间的关联性来进行优化。他把权向量组合成字典来表示参...
  • feynman233
  • feynman233
  • 2017年04月08日 20:58
  • 434

面试-动态查找-笔记

动态查找树 静态查找结构:顺序查找、折半查找 动态查找结构:二叉查找树、平衡二叉树、红黑树、B/B+树   当所有的静态查找结构添加和删除一个数据的时候,整个结构都要重建,需要动态查找结构。 ...
  • Hou_Rj
  • Hou_Rj
  • 2011年10月11日 10:29
  • 714

数据结构笔记-----查找

查找的概念 搜索引擎用的是静态查找 代码(静态查找and动态查找) #include #include #include #include "SeqList.h" #d...
  • qq1028951741
  • qq1028951741
  • 2016年03月19日 18:25
  • 205

OpenCV笔记: 查找轮廓

OpenCV笔记: 查找轮廓 主要函数是        cvFindContours(tour_buf,storage,&contour,sizeof(CvContour),  CV_RETR_...
  • trandy
  • trandy
  • 2011年09月26日 18:19
  • 2277

数据结构笔记之查找

我们学习数据结构之前的那些查找,比如说查找数据库,
  • dalleny
  • dalleny
  • 2014年08月14日 22:35
  • 576

大话数据结构笔记-查找

大话数据结构笔记-查找查找就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。查找概论查找表是由同一类型的数据元素(或记录)构成的集合。关键字(key)是数据元素中某个数据...
  • zjiang1994
  • zjiang1994
  • 2017年12月21日 18:25
  • 58
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:查找笔记
举报原因:
原因补充:

(最多只允许输入30个字)