[Super detalhado] Estrutura de dados: conceitos básicos

Quadro de conhecimento

Insira a descrição da imagem aqui
Conteúdo do programa:

  • Conceitos e termos relacionados à estrutura de dados
  • Três elementos da estrutura de dados: estrutura lógica, estrutura física e operação de dados
  • Análise e cálculo da complexidade do algoritmo do tempo e da complexidade do espaço

Estrutura de dados é uma disciplina que estuda os objetos operacionais em problemas de programação de computação não numérica, bem como o funcionamento da relação entre eles e outras questões relacionadas.

Projeto do programa = estrutura de dados + algoritmo


No.1 O que é uma estrutura de dados?

1. Conceitos básicos e terminologia

1. Dados

Dados: É um símbolo que descreve coisas objetivas. É um objeto que pode ser manipulado em um computador. É uma coleção de símbolos que podem ser reconhecidos pelo computador e inseridos no computador para processamento. (Os dados incluem não apenas tipos numéricos, como inteiros e tipos reais, mas também tipos não numéricos, como caracteres e sons, imagens e vídeos.)

2. Elementos de dados

Elemento de dados: É a unidade básica que compõe os dados e tem um determinado significado, geralmente é processado como um todo no computador. Também se tornou um recorde. (Por exemplo: animais como galinhas, patos, gado, ovelhas, porcos e cães são os elementos de dados das aves)

3. Item de dados

Item de dados: um elemento de dados pode consistir em vários itens de dados. (Por exemplo: as pessoas podem ter itens de dados como olhos, ouvidos, nariz e boca).
Um item de dados é a menor unidade de dados indivisíveis.

Insira a descrição da imagem aqui

4. Objeto de dados

Objeto de dados: uma coleção de elementos de dados da mesma natureza e um subconjunto de dados. (Qual é a mesma natureza? Significa que os elementos de dados têm o mesmo número e tipo de itens de dados, como: as pessoas têm os mesmos itens de dados como nome, aniversário, sexo, etc.)
Uma vez que o objeto de dados é um subconjunto de dados, em aplicações práticas, Os elementos de dados processados ​​geralmente têm a mesma natureza, e todos nós nos referimos aos objetos de dados como dados, para abreviar, se não houver confusão.

5. Estrutura de dados

Elementos de dados diferentes não são independentes, mas existem relacionamentos específicos e chamamos esses relacionamentos em estruturas.
Estrutura de dados: é uma coleção de elementos de dados que possuem um ou mais relacionamentos específicos entre si.

2. Estrutura lógica e estrutura física

1. Estrutura lógica

Estrutura lógica: refere-se ao relacionamento entre os elementos de dados em um objeto de dados.

Estrutura da coleção Estrutura da
coleção: Além dos elementos de dados na estrutura da coleção pertencerem à mesma coleção, não há outra relação entre eles.
Estrutura de coleção
Estrutura linear Estrutura
linear: Existe uma relação um-para-um entre os elementos de dados na estrutura
Estrutura linear
linear.Estrutura em árvore.Estrutura em
árvore: Existe uma relação hierárquica um-para-muitos entre os elementos de dados na estrutura em árvore.
Estrutura de árvore
Estrutura gráfica Estrutura
gráfica: Os elementos de dados da estrutura gráfica estão em uma relação muitos para muitos
Estrutura gráfica

2. Estrutura física (estrutura de armazenamento)

Estrutura física: refere-se à forma de armazenamento da estrutura lógica dos dados no computador.
Existem duas estruturas de armazenamento para elementos de dados: armazenamento sequencial e armazenamento em cadeia.
Estrutura de armazenamento sequencial Estrutura de armazenamento
sequencial: armazena dados em unidades de armazenamento com endereços consecutivos, e as relações lógicas e físicas entre os dados são consistentes.
Estrutura de armazenamento sequencial
Estrutura
de armazenamento em cadeia Estrutura de armazenamento em cadeia: Armazene elementos de dados em qualquer unidade de armazenamento Este grupo de unidades de armazenamento pode ser contínuo ou descontínuo. O relacionamento de armazenamento do elemento de dados não reflete seu relacionamento lógico, portanto, um ponteiro é necessário para armazenar o endereço do elemento de dados, de modo que a localização do elemento de dados associado possa ser encontrada por meio do endereço.
Estrutura de armazenamento de corrente

Três tipos de dados abstratos

1. Tipo de dados

Tipo de dados: refere-se a uma coleção de valores da mesma natureza e um termo geral para algumas operações definidas nesta coleção.
Diferentes tipos de dados têm diferentes espaços de memória.
Na linguagem C, de acordo com diferentes valores, os tipos de dados podem ser divididos em duas categorias:

  • Tipo atômico: É um tipo básico que não pode ser decomposto, incluindo inteiros, reais e tipos de caracteres.
  • Tipo de estrutura: é composta por vários tipos e pode ser decomposta. Por exemplo, uma matriz de inteiros é composta de vários dados de inteiros.

Por exemplo, na linguagem C, as variáveis ​​vivem int a, b, o que significa que o intervalo de valores de int não pode ser excedido ao atribuir valores às variáveis ​​a e b, e as operações entre as variáveis ​​a e b só podem ser permitidas pelo int tipo Operação.

2. Tipos de dados abstratos

Abstração se refere a extrair a natureza universal das coisas.
** Abstract Data Type (ADT): Refere-se a um modelo matemático e um conjunto de operações definidas no modelo modificado. ** A definição de um tipo de dado abstrato depende apenas de seu conjunto de características lógicas e não tem nada a ver com a forma como é representado e implementado em outros computadores. O tipo de dado abstrato incorpora as características de decomposição do problema, abstração e ocultação de informações no design do programa.

Insira a descrição da imagem aqui


Algoritmo nº 2

1. Definição do algoritmo

Um algoritmo é uma descrição das etapas para resolver um problema específico, sendo representado em um computador como uma sequência finita de instruções, e cada instrução representa uma ou mais operações.

Dois, características do algoritmo

O algoritmo possui cinco características básicas: entrada, saída, finitude, certeza e viabilidade.
Requisitos de projeto de algoritmo: exatidão, legibilidade, robustez, alta eficiência e baixos requisitos de armazenamento .
Métodos de medição de algoritmos: métodos pós-estatísticos (não científicos e imprecisos), métodos de pré-análise e estimativa .

Três, o crescimento gradual da função

O crescimento gradual da função: dadas duas funções f (n) e g (n), se houver um inteiro N tal que para todo n> N, f (n) é sempre maior que g (n), então dizemos que o crescimento de f (n) é progressivamente mais rápido que o de g (n).

Ao julgar a eficiência de um algoritmo, o Changshu e outros itens menores na função podem frequentemente ser ignorados, e mais atenção deve ser dada à ordem do item principal (o item de ordem mais alta).

Para julgar se um algoritmo é bom ou não, não podemos fazer julgamentos precisos com apenas uma pequena quantidade de dados. Se pudermos comparar o crescimento gradual da função de frequência de execução da chave de alguns algoritmos, podemos basicamente analisar: um algoritmo, à medida que n aumenta, ele se tornará cada vez mais superior a outro algoritmo, ou pior e pior Em outro algoritmo.

Quarto, a complexidade do tempo do algoritmo

1. Definição de complexidade de tempo de algoritmo

Na análise do algoritmo, o número total de execuções de sentenças T (n) é uma função do tamanho do problema n, e então a mudança de T (n) com n é analisada e a ordem de magnitude de T (n) é determinada.
A complexidade de tempo do algoritmo, ou seja, a medição de tempo do algoritmo, é denotada como: T (n) = O (f (n)) T (n) = O (f (n))T ( n )=O ( f ( n ) ) . Ele disse que conforme o tamanho do problema n aumenta, a taxa de crescimento do tempo de execução do algoritmo é a mesma que a taxa de crescimento de f (n), que é chamada de complexidade de tempo progressiva do algoritmo ou, abreviadamente, complexidade de tempo. Onde f (n) é uma certa função do tamanho do problema n.

Desta forma, o capital O () é usado para refletir a notação da complexidade de tempo do algoritmo, e nós a chamamos de notação de O grande .
Em geral, à medida que n aumenta, o algoritmo com o aumento mais lento em T (n) é o algoritmo ótimo.

Complexidade de tempo comum

Exemplo de função de frequência de execução Ordem Termo informal
12 O(1) Ordem constante
2n + 3 Sobre) Ordem linear
3n2 + 2n + 1 O (n2) Ordem quadrada
5log2n + 20 O (logn) Ordem logarítmica
2n + 3nlog2n + 19 O (nlogn) ordem nlogn
6n3 + 2n2 + 3n + 4 O (n3) Ordem cúbica
2n O (2n) Ordem exponencial

Comparação do tempo consumido de pequeno a grande porte:

O (1) <O (logn) <O (n) <O (nlogn) <O (n 2) <O (n 3) <O (2 n) <O (n!) <O (nn) O ( 1) <O (logn) <O (n) <O (nlogn) <O (n ^ 2) <O (n ^ 3) <O (2 ^ n) <O (n!) <O (n ^ n ) O(1)<O ( l o g n )<O ( n )<O ( n l o g n )<O ( n2 )<O ( n3 )<O(2n )<O ( n ! )<O ( nn )

2. Derivação do método Big O-order

Derive a grande ordem O

  1. Substitua todas as constantes de adição no tempo de execução por uma constante 1.
  2. Na função de contagem em execução modificada, apenas os itens de ordem mais alta são retidos.
  3. Se o termo de ordem mais alta existir e não for 1, remova a constante multiplicada por esse termo.
    O resultado é um grande pedido O.

3. Pior caso e caso médio

Procuramos um número em uma matriz de n números aleatórios. O melhor caso é que o primeiro número seja. Então, a complexidade de tempo do algoritmo é O (1), mas também é possível que esse número permaneça na última posição ., Então a complexidade de tempo do algoritmo é O (n), que é o pior caso.
O tempo de execução do pior caso é uma garantia, ou seja, o tempo de execução não será mais interrompido. Em aplicativos, este é o requisito mais importante. Geralmente, a menos que especificado de outra forma, os tempos de execução que mencionamos são os de pior caso.

4. Complexidade do espaço do algoritmo

A complexidade espacial do algoritmo é realizada calculando o espaço de armazenamento exigido pelo algoritmo. A fórmula de cálculo para a complexidade espacial do algoritmo é escrita como: S (n) = O (f (n)) S (n) = O (f (n))S ( n )=O ( f ( n ) ) onde n é o tamanho do problema ef (n) é uma função do espaço de armazenamento ocupado por n na frase.

Link abaixo

[Super detalhado] Estrutura de dados: tabela linear

Acho que você gosta

Origin blog.csdn.net/Real_Fool_/article/details/112226369
Recomendado
Clasificación