Artigo Diretório
Visão geral
Este capítulo apresenta os conceitos básicos de estruturas de dados e algoritmos, bem como os métodos básicos de análise de algoritmos, que são a base para o aprendizado dos capítulos subsequentes. A estrutura organizacional dos pontos de conhecimento neste capítulo é mostrada na figura abaixo:
Pontos-chave / dificuldades / pontos
O foco deste capítulo é :
- Conceitos básicos de estrutura de dados;
- A estrutura lógica dos dados, estrutura de armazenamento e a relação entre os dois;
- Algoritmos e características;
- Representação de uma grande marca 0.
A dificuldade deste capítulo é :
- Definição e uso de tipos de dados abstratos;
- Análise da complexidade do tempo do algoritmo.
Este capítulo compreenderá duas linhas principais: uma linha principal é a estrutura de dados, incluindo o objeto de pesquisa da estrutura de dados e conceitos relacionados, e a outra linha principal é o algoritmo, incluindo conceitos relacionados a algoritmos, métodos de descrição e métodos de análise de complexidade de tempo.
Na parte da estrutura de dados , comece com o processo de solução do problema e entenda "estrutura de dados + algoritmo = programa"; preste atenção à relação entre a estrutura de dados e o design do programa. O conceito central da parte da estrutura de dados é o elemento de dados, preste atenção à relação entre os elementos de dados por meio de exemplos específicos; o conceito importante da parte da estrutura de dados é a estrutura de dados, devemos compreender dois aspectos: estrutura lógica e estrutura de armazenamento, e prestar atenção para compreender os dois O relacionamento entre.
Na parte do algoritmo , o conceito e as características do algoritmo devem ser os pontos básicos, e as características do algoritmo da aplicação devem ser atentadas no ensino futuro. Não aprenda o conceito isoladamente, preste atenção à extensão e aplicação do conceito; para a análise do desempenho do algoritmo ao longo do tempo, preste atenção Enfocando a taxa de crescimento, ou seja, a ordem de magnitude do número de execuções da instrução básica, três pontos-chave são enfatizados: instrução básica, número de execuções e ordem de magnitude. O resultado da análise de desempenho do algoritmo é a ordem de magnitude representada pela notação grande O.
Por fim, destaca-se que a estrutura de dados e a análise de algoritmos são todas voltadas para grandes quantidades de dados, ou seja, a organização de grandes quantidades de dados e a eficiência do processamento de grandes quantidades de dados. Com o aumento da velocidade de computação do computador, a demanda por programas rápidos que podem lidar com grandes quantidades de dados tornou-se cada vez mais forte.
Pontos de conhecimento
- O processo geral de design de programa é "pergunta → ideia → algoritmo → programa", e sua essência é a representação e processamento de dados. A principal tarefa da representação de dados é abstrair o modelo de dados do problema e converter o modelo da representação externa do computador para a representação interna do computador; a principal tarefa do processamento de dados é abstrair a descrição do método de resolução de problemas, ou seja, projetar o algoritmo.
- A estrutura de dados é o assunto do estudo dos objetos operacionais dos computadores em problemas não numéricos e seus relacionamentos e operações.
- Elemento de dados é a unidade básica de dados, que geralmente é considerada e processada como um todo em programas de computador. O elemento de dados é a menor unidade de dados envolvida na discussão da estrutura de dados, e o item de dados geralmente não é considerado.
- A estrutura de dados refere-se a uma coleção de elementos de dados que têm um certo relacionamento entre si. De acordo com diferentes pontos de vista, a estrutura de dados é dividida em estrutura lógica e estrutura de armazenamento. A estrutura lógica dos dados se refere ao relacionamento lógico geral entre os elementos dos dados, e a estrutura de armazenamento dos dados é a representação dos dados e sua estrutura lógica em um computador.
- De acordo com as diferentes relações lógicas entre os elementos de dados, as estruturas de dados são divididas em quatro categorias: coleções, estruturas lineares, estruturas em árvore e estruturas de gráfico.
- A estrutura de dados geralmente tem dois métodos de armazenamento: estrutura de armazenamento sequencial e estrutura de armazenamento vinculada.
- Um tipo de dados abstrato é um termo geral para um modelo de dados (ou seja, uma estrutura de dados) e um conjunto de operações definidas na estrutura.
- Um algoritmo é uma descrição das etapas para resolver um problema específico, uma sequência finita de instruções. Os algoritmos devem atender às seguintes cinco características importantes: entrada, saída, finitude, certeza e viabilidade.
- Além de satisfazer as cinco características do algoritmo, um algoritmo "bom" também possui as seguintes características: correção, robustez, simplicidade, hierarquia abstrata e eficiência.
- Os métodos comumente usados para descrever algoritmos incluem linguagem natural, fluxogramas, linguagens de programação, pseudocódigo, etc. Entre eles, o pseudocódigo é um método mais apropriado para descrever algoritmos, que é chamado de "linguagem de algoritmo" ou "primeira linguagem".
- Existem dois métodos para medir a eficiência de um algoritmo: métodos pós-estatísticos e métodos de pré-análise e estimativa.
- Deixando de lado os fatores relacionados a software e hardware de computador, o fator mais importante que afeta o custo de tempo do algoritmo é a escala do problema. A escala do problema refere-se à quantidade de input, geralmente pode ser obtida a partir da descrição do problema.
- Para refletir objetivamente o tempo de execução de um algoritmo, o número de execuções das sentenças básicas no algoritmo pode ser usado para medir a carga de trabalho do algoritmo. A instrução básica é uma instrução cujos tempos de execução são proporcionais aos tempos de execução de todo o algoritmo.
- A complexidade do tempo é geralmente representada pela notação grande O, este método é na verdade um método de estimativa.
- Uma maneira simples de resolver a complexidade de tempo do algoritmo é encontrar a sentença com mais tempos de execução entre todas as sentenças como a sentença básica, calcular a ordem de magnitude dos tempos de execução da sentença básica e colocá-la na notação O grande.
Exercício
Abstração e programação de problemas
A maneira de se comunicar efetivamente entre humanos e computadores é (A).
A. Programa B. Linguagem C. Declaração D. Algoritmo
A chave para o design do programa é (C).
A. Estrutura de dados e algoritmo B. Representação de dados e processamento de dados CA e B são
todos sobre a organização de dados e processamento de todas as questões discutidas neste curso. (×)
O pensamento usado no processo de design do programa é (D).
A. Pensamento lógico B. Pensamento abstrato C. Pensamento de imagem D. Pensamento computacional
Conceitos básicos de estrutura de dados A estrutura
lógica não tem nada a ver com o conteúdo e a forma do elemento de dados em si. (√)
A realização de operações básicas com base em uma certa estrutura lógica é única. (×) Em
teoria, a estrutura de armazenamento não tem nada a ver com a linguagem de programação. (×)
O foco ao discutir a estrutura de dados é (B).
A. Dados B. Elemento de dados C. Objeto de dados D. Item de
dados Os dados processados pelo compilador são (C).
A. Linguagem B. Declaração C. Programa fonte D. String
De acordo com diferentes pontos de vista, a estrutura de dados é dividida em estrutura lógica e estrutura de armazenamento, e o ponto de vista se refere a (A).
A. Memória B. Armazenamento externo C. Arquivo D. Problema
Conceitos básicos de algoritmos Os
fluxogramas são o método mais comumente usado para descrever algoritmos. (×)
Como as linguagens de programação, o pseudocódigo também possui padrões internacionais. (×)
O determinismo do algoritmo requer que para a mesma entrada, a mesma saída seja obtida. (√) O
algoritmo deve satisfazer a correção, caso contrário, não há valor de existência. (×)
(D) é chamado de "linguagem de algoritmo".
A. Linguagem natural B. Fluxograma C. Linguagem de programação D. Pseudo código
Análise do algoritmo
A complexidade de tempo do algoritmo é determinada pelo número de execuções das sentenças básicas no algoritmo. (×)
A complexidade de tempo do algoritmo é um cálculo preciso dos recursos consumidos pelo algoritmo. (×)
A complexidade do espaço de um algoritmo refere-se ao espaço ocupado pelos dados de entrada / saída e o espaço auxiliar para a execução do algoritmo. (×)
Algoritmo in-situ ou algoritmo in-situ significa que o algoritmo não requer espaço auxiliar durante a execução. (×) No
segmento seguinte do programa, a escala do problema é (H), a sentença básica é (C) e a complexidade do tempo é (G).
A. (1)
B. (2)
C. (3)
D. (4)
EO ( n 2 n ^ 2n2 )
FO (M 2 M ^ 2M2 )
GO (m × n)
HO (m × n / 2)
(1)for(i=0;i<m;i++)
{
(2) for(j=0;j<n/2;j++)
(3) cout<<data[i][j];
(4) cout<<endl;
}
Referência: "Estrutura de dados (do conceito à implementação C ++)" Tsinghua University Press, Wang Hongmei