Estrutura de dados
1 Conceitos Básicos
1.1 O que é uma estrutura de dados
Exemplo 2 passou um número inteiro positivo N, a fim de imprimir todos inteiro positivo de 1 a N:
//递归实现
void PrintN(int N){
if(N){
PrintN(N-1);
printf("%d\n",N);
}
}
programa recursivo ocupa um grande espaço
para resolver a eficiência do método, com a eficiência de espaço relacionado com
a segunda função padrão
usando relógio () para testar o programa tempo de execução
, no entanto, algum do tempo de término do programa gasto será muito pequeno, aproximadamente igual a 0, então , você pode 重复
executar o programa
O que é uma estrutura de dados
Estrutura lógico: estrutura linear (1-1), árvores (um para muitos), figo (muitos)
estrutura de armazenamento físico: ele é utilizado em uma matriz de computador ou lista para economizar memória ligada
tipo de dados abstrato
Para um flutuador ou dupla não é importa, ElementType é um tipo de
1.2 O que é um algoritmo
O que é um bom algoritmo
complexidade de tempo T (n)
De acordo com o algoritmo escrito no tempo de execução do programa 耗费时间的长度
. Este comprimento é muitas vezes associada com o tamanho dos dados de entrada. será muito alto levar não esperar pelos resultados.
complexidade espaço S (n)
De acordo com o algoritmo escrito no tempo de execução do programa 占用存储单元的长度
. Este comprimento é muitas vezes associada com o tamanho dos dados de entrada. O uso excessivo pode causar estouro de memória, fazendo com que o programa é interrompido de forma anormal.
Recursiva cada chamada ocupa uma certa quantidade de espaço de memória para armazenar informações, mas apenas para um ciclo variável temporária e para o ciclo, não há dúvida de qualquer programa de desenho chamado, então ele ocupava o espaço é uma constante.
Exemplo:
Algoritmo 1: violência Act. Três aninhados para-circuito, pode vir a ser um N . 3 * 1 constantes
pode ser visto a partir da figura, quando a soma de i a j saber, em conjunto com um número nele, de modo que o ciclo de k pode ser omitido
na medida do possível do n- 2 melhorou a nlogn
Algoritmo 3: dividir e conquistar, em grande problemas complexos cortados em pedaços pequenos, e depois dividir-se para resolvê-los e, finalmente, os resultados são combinados para
dividi-lo em duas partes, a metade esquerda da pesquisa recursiva dos maiores, direita pesquisa recursiva parcial maior do Encontre o meio de alguns dos maiores
computação complexidade de tempo: imagine, quando todo o problema resolvido, há um número N de tempo, se a complexidade é denotada por T (N), então a disponibilidade da complexidade das figuras metade a T (N / 2), por causa do tamanho reduzido para metade.
porção intermédia vermelho: uma vez que o varrimento intermediário a partir da esquerda para a direita e, em seguida, a digitalização, cada elemento 1 são digitalizados, a complexidade deve ser um múltiplo constante de N
correcção não é óbvio (não compreendido)