estructura de datos notas de revisión "a"

notas de revisión de la estructura de datos

En primer lugar, los conceptos básicos y la terminología de estructuras de datos

① elemento de estructura de datos tiene normalmente 4 categorías básicas:

1.集合:结构中的数据元素之间除了“同属于一个集合”的关系外,别无其他关系。
2.线性结构:结构中的数据元素之间存在一个对一个的关系。
3.树形结构:结构中的数据元素之间存在一个对多个的关系。
3.图状结构或网状结构:结构中的数据元素之间存在多个对多个的关系

Las estructuras de datos

② tiempo y el espacio complejidad del algoritmo:

En primer lugar, el concepto:
complejidad del tiempo es el número total de expresión de operación n cambios que afectan a un máximo (coeficiente de exclusión)
, tales como: número total de cálculos expresiones generales como esta:
Un 2 n * n + B 3+ C n + D-2 ^ n- LG (n) + E + F * n-
A! = 0, la complejidad de tiempo es O (2 ^ n-);
A = 0, B <> 0 => O (n- ^ 3.);
A, B = 0, C <> 0 => O (n- ^ 2) y así sucesivamente
ejemplo:

for(i=1;i<=n;i++) {//循环了n*n次,当然是O(n^2)
    for(j=1;j<=n;j++) {
        s++;
    }
}   
for(i=1;i<=n;i++) {//循环了(n+n-1+n-2+...+1)≈(n^2)/2,因为时间复杂度是不考虑系数的,所以也是O(n^2)
    for(j=i;j<=n;j++) {
        s++;
    }
}   
for(i=1;i<=n;i++) {//循环了(1+2+3+...+n)≈(n^2)/2,当然也是O(n^2)
    for(j=1;j<=i;j++) {
        s++;
    }
}
i=1;k=0;
while(i<=n-1){ //循环了n-1≈n次,所以是O(n)
    k+=10*i;
    i++;
}
for(i=1;i<=n;i++) { //循环了(1^2+2^2+3^2+...+n^2)=n(n+1)(2n+1)/6(这个公式要记住哦)≈(n^3)/3,不考虑系数,自然是O(n^3)
    for(j=1;j<=i;j++) {
        for(k=1;k<=j;k++) {
            x=x+1;
        }
    }
}
i=1;  
while (i<=n) {
    i=i*2;
}
/*解:语句1的频度是1,  
    设语句2的频度是t,  则:nt<=n;  t<=log2n
    考虑最坏情况,取最大值t=log2n,
    T(n) = 1 + log2n
    f(n) = log2n
    lim(T(n)/f(n)) = 1/log2n + 1 = 1
    T(n) = O(log2n)*/

Además, la complejidad de tiempo, log (2, n) (base 2) y lg (n) (base 10) son equivalentes, ya que el número de fórmula suela:
log (A, B) = log (c, b) / log (c, a)
Por lo tanto, log (2, n) = log (2,10) * lg (n), el coeficiente ignorada, por supuesto, los dos son equivalentes
dos, calculado como sigue:
medidas concretas para resolver la complejidad temporal del algoritmo es:
  ⑴ identifican algoritmo de declaraciones básicas;
  el número más alto de la declaración de que la aplicación del algoritmo son las declaraciones básicas, por lo general el ciclo de bucle más interior.
  ⑵ calcular el número del número de ejecuciones de nivel declaración básica;
  simplemente contar el número de realizar declaración básica de magnitud, lo que significa que todo el tiempo en función del número de ejecuciones de declaración básica de la derecha a la mayor potencia, se puede pasar por alto todo baja potencia y tiempos máximos coeficiente de potencia. Esto puede simplificar el análisis de algoritmos, y el enfoque en el punto más importante: la tasa de crecimiento.
  ⑶ representa el rendimiento del algoritmo de tiempo con un gran signo de Ο.
  La declaración básica se ejecuta en un gran número de órdenes de magnitud notación Ο.
  Si el algoritmo contiene bucles anidados, la declaración de base es generalmente el bucle más interior, si el bucle que comprende algoritmo paralelo, entonces el ciclo de tiempo complejidad de adición paralelo. Por ejemplo:
  para (i = 1; I <= N-; I ++.)
  X ++;
  for (i = 1;; I <= n- I ++.)
  Para (J = 1; J <= N-; J ++.)
  X ++;
  primero para bucle la complejidad de tiempo es Ο (n), para el segundo ciclo de la complejidad de tiempo es O (n- 2), la complejidad de tiempo del algoritmo es O (n- + n- 2) = o (^ n-2).
complejidad de tiempo común:
la complejidad de tiempo común del algoritmo es en orden ascendente:
  o (. 1) <o (log2N) <o (n-) <o (Nlog2N) <o (n- 2) <o (n- . 3) <... <Ο (2 ^ n ) <Ο (n!)

En el que,
1.Ο (. 1) representa el número de una declaración se ejecuta sustancialmente constante, en general, no existe siempre que el algoritmo de bucle, la complejidad de tiempo es Ο (1).
2.O (n), O (n ^ 2), el orden O cúbico (n ^ 3), ... , k º orden O (n ^ k) es la complejidad de tiempo del orden polinomio, llamado un tiempo de primer orden complejidad , segundo complejidad del tiempo. . . .
3. O (2 ^ n), la complejidad de tiempo se orden exponencial, el tipo no es práctico
4. orden O (log2N), el orden de la O lineal (nlog2n), además de orden constante, el tipo de la máxima eficiencia
Ejemplo: Algoritmo :

for(i=1;i<=n;++i)
  {
     for(j=1;j<=n;++j)
     {
         c[ i ][ j ]=0; //该步骤属于基本操作 执行次数:n^2
          for(k=1;k<=n;++k)
               c[ i ][ j ]+=a[ i ][ k ]*b[ k ][ j ]; //该步骤属于基本操作 执行次数:n^3
     }
  }

Hay T (n) = n- 2 + n- . 3, de acuerdo con los paréntesis encima del mismo orden, podemos determinar n ^ 3 es T (n) del mismo orden de magnitud
no es f (n) = n ^ 3 , y de acuerdo con T ( n) / f (n) de límite constante C puede obtenerse
, la complejidad de tiempo del algoritmo es: T (n) = O ( n ^ 3)

Publicado cinco artículos originales · ganado elogios 1 · visitas 256

Supongo que te gusta

Origin blog.csdn.net/zhanghongbin159/article/details/102862025
Recomendado
Clasificación