Galeria de mapas mentais Algoritmos básicos de estrutura de dados
As estruturas de dados são a forma como os computadores armazenam e organizam os dados. Uma estrutura de dados refere-se a uma coleção de elementos de dados que possuem um ou mais relacionamentos específicos entre si. Muitas vezes, estruturas de dados cuidadosamente selecionadas podem levar a uma maior eficiência operacional ou de armazenamento. As estruturas de dados são frequentemente relacionadas a algoritmos de recuperação e técnicas de indexação eficientes. Este mapa mental é uma compilação da estrutura de dados do vestibular de informática. Estas são as duas partes do algoritmo básico da estrutura de dados: pesquisa e classificação. Espero que isso ajude meus amigos!
Editado em 2019-09-18 12:58:50Microbiologia medica, Infezioni batteriche e immunità riassume e organizza i punti di conoscenza per aiutare gli studenti a comprendere e ricordare. Studia in modo più efficiente!
La teoria cinetica dei gas rivela la natura microscopica dei fenomeni termici macroscopici e le leggi dei gas trovando la relazione tra quantità macroscopiche e quantità microscopiche. Dal punto di vista del movimento molecolare, vengono utilizzati metodi statistici per studiare le proprietà macroscopiche e modificare i modelli di movimento termico delle molecole di gas.
Este é um mapa mental sobre uma breve história do tempo. "Uma Breve História do Tempo" é um trabalho científico popular com influência de longo alcance. Ele não apenas introduz os conceitos básicos da cosmologia e da relatividade, mas também discute os buracos negros e a expansão. Do universo. questões científicas de ponta, como inflação e teoria das cordas.
Microbiologia medica, Infezioni batteriche e immunità riassume e organizza i punti di conoscenza per aiutare gli studenti a comprendere e ricordare. Studia in modo più efficiente!
La teoria cinetica dei gas rivela la natura microscopica dei fenomeni termici macroscopici e le leggi dei gas trovando la relazione tra quantità macroscopiche e quantità microscopiche. Dal punto di vista del movimento molecolare, vengono utilizzati metodi statistici per studiare le proprietà macroscopiche e modificare i modelli di movimento termico delle molecole di gas.
Este é um mapa mental sobre uma breve história do tempo. "Uma Breve História do Tempo" é um trabalho científico popular com influência de longo alcance. Ele não apenas introduz os conceitos básicos da cosmologia e da relatividade, mas também discute os buracos negros e a expansão. Do universo. questões científicas de ponta, como inflação e teoria das cordas.
Algoritmos básicos de estrutura de dados
Encontrar
Métodos básicos de pesquisa
Método de pesquisa sequencial: verifica sequencialmente a tabela linear começando em uma extremidade da tabela e compara as palavras-chave digitalizadas com os valores fornecidos em sequência.
Método de meia pesquisa: A pesquisa exige que a tabela linear adote uma estrutura de armazenamento sequencial e os elementos da tabela sejam organizados em ordem por palavras-chave. Compare a palavra-chave registrada na posição intermediária da tabela com a palavra-chave de pesquisa. Se as duas forem iguais, a pesquisa será bem-sucedida, caso contrário, use o registro da posição intermediária para dividir a tabela na primeira e na última subtabelas. registrado na posição intermediária é maior que a palavra-chave de pesquisa. Em seguida, pesquise ainda mais na subtabela anterior, caso contrário, pesquise ainda mais na próxima subtabela
Método de pesquisa de bloco: divida a tabela linear em vários blocos e exija que a maior palavra-chave no bloco anterior seja menor que o próximo bloco. Crie uma tabela de índice, use o valor máximo da chave em cada bloco como o valor da chave da tabela de índice e armazene-o em uma matriz auxiliar na ordem dos blocos. Ao pesquisar, primeiro pesquise na tabela de índice para determinar onde está o nó. que você está procurando está localizado em blocos. Como a tabela de índice é classificada, a tabela de índice pode ser pesquisada usando pesquisa sequencial ou meia pesquisa e, em seguida, o nó correspondente pode ser encontrado por pesquisa sequencial no bloco correspondente, que é uma combinação dos dois primeiros métodos;
Estruturas de dados adequadas para pesquisas
Árvore binária
Árvore de classificação binária
Propriedade básica: se a subárvore esquerda não estiver vazia, então os valores de todos os nós da subárvore esquerda serão menores que o valor de seu nó raiz, se a subárvore direita não estiver vazia, então os valores de todos os nós da subárvore; a subárvore direita é maior que o valor do nó raiz, não há nós com valores de chave iguais;
Operações básicas
Pesquisa: pesquisa para baixo a partir do nó raiz
Inserção: Para uma palavra-chave que não existe na árvore de classificação binária, a posição onde a pesquisa falha é a posição de inserção.
Excluir: Se for um nó folha, ele pode ser excluído diretamente. Se o nó tiver apenas uma das subárvores esquerda e direita, exclua o ponto modificado e conecte diretamente sua subárvore ao nó pai. subárvores, em seguida, procure um nó que possa substituir sua posição em sua subárvore esquerda ou subárvore direita.
árvore binária balanceada
Propriedades básicas: É uma árvore vazia ou o valor absoluto da diferença de altura entre suas subárvores esquerda e direita não excede 1, e ambas as subárvores esquerda e direita são árvores binárias balanceadas.
Método de construção: Coloque os elementos da matriz na árvore um por um. Se houver um nó com valor BF negativo e se sua subárvore esquerda for inferior à subárvore direita, gire no sentido anti-horário ao redor do nó para alterar o nó raiz de. o nível atual Após o ajuste fino, se sua subárvore direita for inferior à subárvore esquerda, gire no sentido horário ao redor do nó para alterar o nó raiz do nível atual e, em seguida, faça o ajuste fino.
multi-árvore
Árvore B (árvore B)
Propriedades básicas: Se for uma árvore m-ária, o nó raiz tem pelo menos dois ramos, e os nós não-raiz e não-folha têm pelo menos [m/2] ([] é a função de arredondamento) ramos cada; o nó pode ter várias palavras-chave de ramificação, os nós da árvore m-ária podem acomodar até m-1 palavras-chave; as palavras-chave dos nós no mesmo nível são organizadas da esquerda para a direita em ordem de tamanho, começando na extremidade esquerda/direita do nó ou entre duas palavras-chave Liderar uma ramificação O tamanho das palavras-chave no nó conectado pela ramificação deve estar entre as palavras-chave conectadas no nível anterior (se for conduzido a partir do terminal esquerdo, deve ser menor que a palavra-chave da extremidade esquerda. , e se for conduzido a partir do ponto final direito, deverá ser maior que a palavra-chave final direita ).
Operações básicas
Pesquisa: pesquisa para baixo a partir do nó raiz
Inserção: Para uma palavra-chave que não existe na árvore B, a posição onde a busca falha é a posição de inserção. Se o número de palavras-chave do nó for maior que m-1 após a inserção, o nó precisará ser dividido: as palavras-chave com valores centralizados entre os nós interpolados serão mescladas no nó de nível superior se a palavra-chave do nó de nível superior. Caso o número também ultrapasse o padrão, repita a operação.
excluir
O nó excluído está localizado no nó terminal
O número de palavras-chave do nó é maior que [m/2]-1: exclua diretamente
O número de palavras-chave do nó é igual a [m/2]-1
Se o número de palavras-chave nos nós esquerdo e direito da palavra-chave for maior que [m/2]-1, peça emprestadas palavras do nó com o número de palavras-chave maior que [m/2]-1 para preencher a posição original.
Se o número de palavras-chave nos nós esquerdo e direito da palavra-chave for igual a [m/2]-1, os nós esquerdo e direito da palavra-chave serão mesclados em um nó após a exclusão da palavra-chave.
O nó excluído não está no nó terminal
① Siga o ponteiro esquerdo da palavra-chave até o nó raiz da subárvore ② Desça ao longo do ponteiro direito da palavra-chave mais à direita no nó raiz e use o mesmo método até chegar ao nó terminal ③ Use o nó terminal Clique para substituir o nó a ser excluído e, em seguida, use o método de exclusão do nó terminal para executar o processamento subsequente após o nó terminal ser substituído para cima.
Árvore B
Propriedade básica: um nó contendo n palavras-chave (incluindo nós terminais) possui n ramificações, onde [m/2]<=n<=m
A diferença da árvore B: Na árvore B, todos os nós não-folha servem apenas como índice e não contêm o endereço de armazenamento do registro correspondente à palavra-chave. Eles estão apenas no registro apontado pelo ponteiro de cada um. nó folha O endereço de armazenamento de todas as palavras-chave; cada palavra-chave na árvore B corresponde ao endereço de armazenamento de um registro.
tabela hash
Propriedade básica: calcule o endereço da palavra-chave na tabela com base na palavra-chave fornecida
Método de construção
Método de endereçamento direto: considere a palavra-chave ou uma função linear da palavra-chave como o endereço Hash
Método de análise numérica: pegue vários dígitos da palavra-chave para formar um endereço Hash
Método quadrado: pegue os dígitos do meio depois de elevar ao quadrado a palavra-chave como o endereço Hash
Método de divisão com resto: pegue a palavra-chave dividida por um número que não seja maior que o comprimento da tabela Hash (geralmente o maior número primo que não seja maior que o comprimento da tabela) e divida a palavra-chave pelo número para obter o resto como o endereço Hash.
Métodos de tratamento de conflitos
lei de endereço aberto
Método de sondagem linear: depois que um endereço duplicado aparecer, teste retroativamente usando esse endereço como ponto de partida até que o número de endereços não utilizados apareça.
Método de detecção quadrada: processe o endereço conflitante d (d² 1) e use o valor calculado como endereço
Método de endereço de cadeia: um método de conectar todos os sinônimos usando uma lista vinculada individualmente
organizar
Classificação interna: o processo de classificação em que a coluna a ser classificada é completamente armazenada na memória, adequada para sequências de elementos que não são muito grandes
Um método com complexidade de tempo de O(n²)
Classificação por bolha: ① Compare elementos adjacentes. Se o primeiro for maior que o segundo, troque os dois ② Faça o mesmo para cada par de elementos adjacentes, começando pelo primeiro par e terminando no último par. Neste ponto, o último elemento deve ser o maior número ③ Repita as etapas acima para todos os elementos, exceto o último. ④ Continue repetindo as etapas acima para cada vez menos elementos até que não haja pares de números para comparar.
Classificação por seleção simples: suponha que o número de registros na sequência classificada seja n. i pega 1, 2,...,n-1, encontra o registro com o menor código de classificação de todos os registros n-i 1 (Ri, Ri 1,..., Rn) e troca-o com o i-ésimo registro. Após executar n-1 vezes, a classificação da sequência de registros é concluída.
Classificação por inserção direta: primeiro, os primeiros dados são classificados primeiro e, em cada passagem, um dado a ser classificado é inserido na posição apropriada de um grupo de registros que foi classificado de acordo com o tamanho de sua chave. todos os dados a serem classificados são inseridos
Método com complexidade de tempo de O (n ^ 3/2)
Classificação de colina: primeiro pegue um número inteiro d1 menor que n como o primeiro incremento e agrupe todos os registros no arquivo. Todos os registros cuja distância é múltiplo de d1 são colocados no mesmo grupo. Primeiro execute a classificação por inserção direta dentro de cada grupo, depois pegue o segundo incremento d2<d1 e repita o agrupamento e classificação acima até o incremento dt=1 (dt<...<d2<d1)
Um método com complexidade de tempo O(nlog2n)
Classificação de heap: construa a sequência a ser classificada em uma árvore binária e, em seguida, execute ajustes de transposição para garantir que todos os nós filhos sejam menores que seus nós pais. Neste momento, o valor do nó raiz deve ser o valor máximo. e construa uma árvore binária novamente, repita as operações acima.
Classificação de mesclagem bidirecional: ① Forme vários grupos binários e ajuste-os na ordem dentro do grupo ② Mescle os grupos binários ordenados em um grupo e ajuste-os na ordem dentro do grupo ③ Mescle todos os dados em um grupo para completar a classificação
Um método com complexidade de tempo O (nlog(r)m) (r é a base tomada e m é o número do heap)
Classificação radical: Configure dez espaços, denominados 0 espaço, 1 espaço,..., 9 espaço Primeiro, corresponda os registros na sequência a cada espaço principal, um por um, de acordo com o valor de um único dígito e coloque-os em cada espaço. Conclua a classificação em cada espaço, retire cada registro do espaço 0 para formar uma nova sequência e repita o trabalho em bits mais altos até que a classificação de bits mais alta seja concluída.
Classificação externa: os arquivos a serem classificados não podem ser carregados na memória de uma só vez e são necessárias várias trocas de dados entre a memória e o armazenamento externo para classificar o arquivo inteiro.
Algoritmo convencional
Classificação por mesclagem: divida a sequência inicial em m segmentos de registro menores, classifique esses segmentos de registro e compare continuamente os valores mínimos das extremidades menores de cada segmento de registro até que a classificação seja concluída.
subalgoritmo importante
Árvore perdedora: quando a classificação por mesclagem detecta o valor mínimo, se você não usar a árvore perdedora, será necessário comparar os k valores lidos k-1 vezes. Depois de usá-la, você só precisará executar log2k vezes. de selecionar o melhor valor é O (log2k), a complexidade do tempo de construção da árvore é O (klog2k) e a altura da árvore perdedora é [log2k] 1
Estabelecer
① Para os k registros lidos, uma árvore binária é estabelecida com quaisquer dois nós como um grupo. O menor valor em cada grupo é o vencedor. O número de sequência correspondente ao perdedor é usado como o nó pai de ambos, e a sequência. o número correspondente ao vencedor é O número de sequência é usado como o nó pai do nó pai. Se sobrar um registro, o próximo processo será processado. ② Processe o registro em excesso, compare seu número de sequência com uma determinada árvore binária. e mescle-o em uma árvore de acordo com o princípio do vencedor no topo E conecte os valores de registro em excesso neste nó como seus nós filhos ③ Compare as árvores binárias e mescle-as em uma árvore de acordo com o vencedor no topo. princípio (o nó raiz da árvore perdedora tem apenas uma bifurcação e o restante está em conformidade com a árvore binária em princípio)
Ajustamento
Depois de retirar o valor mínimo da árvore perdedora, os registros recém-lidos precisam ser adicionados para formar a árvore perdedora. Neste momento, a árvore perdedora precisa ser ajustada para atender aos critérios da árvore perdedora. Método de ajuste: preencha as vagas com registros recém-lidos e compare passo a passo de baixo para cima. O número de série do vencedor é o nó pai do número de série do perdedor até que o ajuste seja concluído.
Classificação por seleção de substituição: De acordo com o tamanho do buffer, um registro é lido da memória externa. Quando o registro preenche o buffer, o menor é selecionado e gravado de volta na memória externa. registro de leitura e o registro de saída se torna o registro inicial atual Parte do segmento mesclado. Se o novo registro inserido for menor que o registro retirado do segmento de mesclagem, ele será gerado como uma alternativa a outros segmentos de mesclagem iniciais. Repita as operações acima
Árvore de mesclagem ideal: segmentos de mesclagem de comprimentos diferentes são obtidos por meio de classificação por seleção de substituição. Cada segmento é colocado em uma árvore de Huffman de acordo com seu comprimento (consulte o capítulo sobre árvores para obter o método). . O dobro da soma do número de arestas passadas pelo nó é o número de E/Ss correspondente à árvore de mesclagem ideal (número mínimo de E/Ss).