Estructura de datos
1 Conceptos básicos
1.1 ¿Qué es una estructura de datos
Ejemplo 2 aprobó una positivo número entero N, el orden de impresión de todas número entero positivo de 1 a N:
//递归实现
void PrintN(int N){
if(N){
PrintN(N-1);
printf("%d\n",N);
}
}
programa recursivo ocupa un gran espacio
para resolver la eficacia del método, con la eficiencia del espacio en relación con
la segunda función estándar
usando el reloj () para probar el programa de tiempo de ejecución
, sin embargo, algunos de la hora de finalización del programa pasado va a ser muy pequeña, aproximadamente igual a 0, entonces , se puede 重复
ejecutar el programa
¿Qué es una estructura de datos
Estructura lógico: estructura lineal (uno a uno), árboles (uno a muchos), la figura (muchos)
estructura de almacenamiento físico: se utiliza en una matriz de ordenador o lista para ahorrar memoria vinculada
tipo de datos abstracto
Para un flotador o doble, no se preocupan, ElementType es un tipo de
1.2 ¿Qué es un algoritmo
¿Qué es un buen algoritmo
Complejidad de tiempo T (n)
De acuerdo con el algoritmo escrito en el momento de ejecución del programa 耗费时间的长度
. Esta longitud es a menudo asociada con el tamaño de los datos de entrada. Demasiado alto dará lugar no esperar los resultados.
complejidad espacio S (n)
De acuerdo con el algoritmo escrito en el momento de ejecución del programa 占用存储单元的长度
. Esta longitud es a menudo asociada con el tamaño de los datos de entrada. El uso excesivo puede causar desbordamiento de memoria, haciendo que el programa se interrumpe de forma anormal.
Cada llamada recursiva ocupa una cierta cantidad de espacio de memoria para almacenar la información, pero sólo para un ciclo variable temporal y para el ciclo, no hay duda de cualquier programa de diseño llamado, por lo que ocupó el espacio es una constante.
Ejemplo:
Algoritmo 1: Ley de violencia. Tres anidada para-loop, puede llegar a ser un N . 3 * 1 constantes
se pueden ver en la figura, cuando la suma de i a j know, junto con un número en él, de modo que el ciclo k puede omitirse
en la medida posible de la n- 2 mejorado para nlogn
Algoritmo 3: divide y vencerás, en gran problemas complejos cortados en trozos pequeños, y luego se separaron para resolverlos, y finalmente se combinan los resultados de
dividirlo en dos partes, la mitad izquierda de la búsqueda recursiva de los más grandes, a la derecha búsqueda recursiva parcial más grande en el buscar el medio de algunos de los más grandes
de computación complejidad del tiempo: imaginar, cuando todo el problema resuelto, hay un número n de tiempo, si la complejidad se denota por T (N), entonces la disponibilidad de la complejidad de las cifras medias a T (N / 2), debido al tamaño reducido a la mitad.
parte intermedia Red: desde la exploración intermedia de la izquierda a la derecha y luego escanear, cada elemento 1 se escanean, la complejidad debe ser un múltiplo constante de N
corrección no es obvia (no se entiende)