Notas de Estudio - Buscar

directorio

 

búsqueda secuencial

La búsqueda binaria

árbol de tipo binario

tabla hash


búsqueda secuencial

Algoritmo de pensamiento no tiene que repetirlos.

El éxito ASL = Σ (i = 1 ~ n) pi * ci, donde Ci es la necesidad de encontrar el número de elementos de comparación i, Pi y en general de 1 / n.

= Sin éxito ASL n, es decir, a través de todos los elementos no encontraron la palabra clave objetivo, la secuencia que añadir un elemento para determinar si la cola o evitar el derrame, esta ASL éxito tiempo = n + 1

La búsqueda binaria

int Bsearch(int a[],int low,int high,int mid)
{
    int mid;
    while(left<=right)
    {
        mid=(left+right)/2;
        if(a[mid]==key)
            return mid;
        else if(a[mid]<k)
            left=mid+1;
        else right=mid-1;
    }
    return 0;
}

El éxito de palabras clave de segmentación ASL = Σ capas / longitud de la matriz en el árbol de decisión

ASL éxito = Σ (número de nodo de capas de la hoja 1) / el número de puntero nulo

árbol de tipo binario

Definición: Si el subárbol izquierdo no está vacío, entonces el subárbol izquierdo del nodo raíz son más pequeños que una palabra clave; subárbol derecho si no está vacío, entonces el subárbol derecho del nodo raíz es mayor que palabras clave.

/*查找关键字的算法*/
BTNode BSTSearch(BTNode* bt,int key)
{
    if(bt==NULL)
        return NULL;
    else
    {
        if(bt->data==key)
            return bt;
        else if(bt->data<key)
            return BSTSearch(bt->lchild,key);
        else
            return BSTSearch(bt->rchild,key);
    }
}
/*插入关键字的算法*/(只能插入在叶子节点的左右孩子处,即bt==null处)
BTNode BSTInsert(BTNode* bt,int key)
{
    if(bt==NULL)
    {
        bt=(*BTNode)malloc(sizeof(BTNode));
        bt->lchild=NULL;
        bt->rchild=NULL;
        bt->data=key;
        return 1;
    }
    else
    {
        if(bt->data==key)    //关键字已存在,插入失败
            return 0;
        else if(bt->data<key)
            return BSTSearch(bt->lchild,key);
        else
            return BSTSearch(bt->rchild,key);
    }
}
/*创建排序树*/(就是反复调用插入关键字算法)
void CreateBST(BTNode *&bt,int key[],int n)
{
    bt=NULL;
    for(int i=0;i<n;i++)
        BSTInsert(bt,key[i]);
}

árbol de tipo binario de borrado

1) Si se retira el nodo de hoja, no dañará las características de los árboles binarios, se pueden eliminar directamente.

2) Si se quita los nodos que no son hojas, pero sólo el subárbol derecho subárbol izquierdo o solamente un nodo, a continuación, se retira el nodo y deja que el / hijo derecho izquierdo sustituir el nodo eliminado. (La posición de su padre heredó)

3) Eliminación de nodos que no son hojas, y los nodos son los niños de todo, esto se puede convertir en el caso 1) o 2). prácticas específicas: pueden restringirse punto a lo largo del p, paso a la izquierda para ir a visitar a los niños la izquierda, luego ir directamente a la derecha hasta el nodo más a la derecha r, si r es el nodo de hoja de acuerdo con 1) para eliminar, o seguir 2) para eliminar (porque r es el nodo más a la derecha, es imposible tener el hijo derecho, el niño sobre la situación allí, que no existe, es p precursor r). Por supuesto, se puede dar el primer paso en el acceso directo al hijo derecho y, a continuación, tiene que ir a buscar el nodo más izquierda l izquierdo, L es p sucesor.

árbol binario equilibrado

tabla hash

método de construcción función hash utilizado

① directa direccionable

H (clave) = a + b * clave

② análisis digital

Tomar un número de bits de la clave de direcciones Hash

③ método reno cuadrado

Después de tomar la dirección de intermedio clave cuadrado tan pocos como clave Hash = 32,32 ^ 2 = 1,024, H (32) = 2

④ excepto estancia,

H (clave) = clave mod p (p es un número primo menor o igual a la longitud máxima de la tabla)

La resolución de conflictos

Abrir direccionable

① método de detección lineal

Hi (clave) = (H (clave) + i) mod m (m es la longitud de la tabla)

② método de detección cuadrada

Hi (clave) = (H (clave) ± i ^ 2) mod m

método de dirección de la cadena

Tabla hash se almacena en cada puntero cabeza unidad sinónimo lista única, cada lista se registra colgó cada otros sinónimos.

éxito ASL = Σ + para cada palabra clave que desea acceder el número de veces que debe realizarse métodos de resolución de conflictos se pueden encontrar en la tabla hash / número de palabras clave

ASL tabla hash éxito = Σ para cada unidad que se acceda, y los métodos ejecutivos de resolución de conflictos a fin de acceder cuantas veces para hacer frente a una serie de unidades vacías / Las funciones hash se pueden asignar (que no debe confundirse larga mesa, funciones hash se puede asignar dirección puede no ser capaz de cubrir todas las direcciones en la tabla)

Significa que, si una celda de la tabla ya está vacío, es la principal, si no está vacío, que detecta su unidad sucesor, si la unidad es el sucesor vacío, es dos veces, o continuar el seguimiento de la unidad de detección, hasta que encuentra un vacío unidad, si la espalda sonda cuatro veces para encontrar una celda vacía, (más una hora de inicio que visitó) es cinco veces.

Publicado 35 artículos originales · ganado elogios 2 · Vistas 1386

Supongo que te gusta

Origin blog.csdn.net/weixin_41001497/article/details/103017935
Recomendado
Clasificación