Notas de Estudo - Encontrar

anuário

 

pesquisa seqüencial

busca binária

árvore de classificação binária

tabela hash


pesquisa seqüencial

Algoritmo de pensamento não tem que repeti-los.

O sucesso do ASL = Σ (i = 1 ~ n) pi * ci, onde ci é a necessidade de encontrar o número de elementos de comparação I, IP e geralmente um / n.

ASL = sem sucesso n, isto é, através de todos os elementos não se encontrar a palavra-chave alvo, a sequência que vai adicionar um elemento para determinar se a cauda ou impedir o derrame, desta vez sem êxito ASL = n + 1

busca binária

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;
}

Bem sucedida palavras-chave de segmentação ASL = Σ camadas / comprimento da matriz na árvore de decisão

ASL vencida = Σ (número de camadas da folha nó 1) / o número de ponteiro nulo

árvore de classificação binária

Definição: Se a sub-árvore esquerda não estiver vazia, então a sub-árvore esquerda do nó raiz são menores do que uma palavra-chave; subárvore direita se não vazia, então a subárvore direita do nó raiz é maior do que palavras-chave.

/*查找关键字的算法*/
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]);
}

árvore de classificação binária de exclusão

1) Se o nó folha é removida, não irá danificar as características de árvores binárias, pode ser eliminado diretamente.

2) Se você remover os nós não-folha, mas apenas a subárvore direita subárvore esquerda, ou apenas um nó, o nó é removido e deixar o / criança direita esquerda substituir o nó removido. (Herdado posição de seu pai)

3) Excluindo nós não-folha, e os nós são crianças ao redor, isso pode ser convertido para o caso 1) ou 2). práticas específicas: para ser abreviada ponto ao longo da p, passo para a esquerda para ir visitar as crianças à esquerda, em seguida, ir direto para a direita até o nó r mais à direita, se r é o nó de folha de acordo com a 1) para excluir ou siga 2) para excluir (porque r é o nó mais à direita, é impossível ter a criança direita, a criança sobre a situação no país, que não existe, é r p precursor). Claro, você pode dar o primeiro passo no acesso à direita para a criança direita, e então tem que ir para encontrar o mais nó l esquerda, l é p sucessor.

árvore binária equilibrada

tabela hash

método da função Hash construção utilizada

① directa endereçável

H (chave) = a + b * tecla

② análise digital

Tome um número de bits de chave de endereço Hash

③ método rena quadrado

Depois de tomar o endereço intermediário chave quadrada tão poucos como chave Hash = 32,32 ^ 2 = 1,024, H (32) = 2

④ exceto I estadia

H (chave) = chave da modificação p (p representa um número primo menos do que ou igual ao comprimento máximo da tabela)

resolução de conflitos

Open-endereçável

① método de detecção linear

Oi (chave) = (H (tom) + i) mod m (m é o comprimento do quadro)

② método de detecção quadrado

Oi (chave) = (H (tom) ± i ^ 2) mod m

método endereço cadeia

tabela hash é armazenado em cada unidade de cabeça ponteiro sinónimo lista única, cada lista é gravado pendurados uns aos outros sinónimos.

sucesso ASL = Σ + para cada palavra-chave que você deseja acessar quantas vezes para executar métodos de resolução de conflitos podem ser encontrados na tabela hash / número de palavras-chave

ASL tabela hash vencida = Σ para cada unidade a ser acedido, e métodos de execução de resolução de conflitos, a fim de acesso como muitas vezes para tratar de um número de unidades vazias / As funções hash pode ser mapeado (não devem ser confundidas tabela de comprimento, As funções hash pode ser mapeado endereço pode não ser capaz de cobrir todos os endereços na tabela)

Meios que, se uma célula da tabela já está vazia, é a principal, se não esvaziar, que detecta a sua unidade sucessor, se a unidade estiver sucessor vazio, é duas vezes, ou continuar a follow-up unidade de detecção, até que encontra um vazio unidade, se a sonda de volta quatro vezes para encontrar uma célula vazia, (mais uma hora de início que visitou) é cinco vezes.

Publicado 35 artigos originais · ganhou elogios 2 · Vistas 1386

Acho que você gosta

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