Las estructuras de datos y algoritmos (entrevista)

algoritmo de ordenación

 

La inserción directa tipo : todos los elementos de la matriz a su vez con la primera fila ha sido bueno en comparación con los elementos, si el elemento seleccionado es menor que los elementos ordenados, el intercambio hasta que todos los elementos han sido comparados

Colina de clasificación : ordenar la matriz para ser agrupados por la brecha de paso, entonces los elementos de cada grupo mediante el método de inserción directa para ordenar la especie; reducido a la mitad cada intervalo de tiempo se reduce, el ciclo de funcionamiento descrito anteriormente; cuando 1 de hueco =, por directa inserto, secuenciación completa

Basta con elegir Ordenar : Comparar + intercambio

HeapSort : Edificio de la tapa grande pila de clasificación

De escritura a mano cómo una pila
 1 insertar un número montón [tamaño ++] = X; arriba (tamaño);
 2 . Qiu ajustar el valor mínimo de entre el montón [ 1 ]
 3 . Quitar el montón mínimo [ 1 ] = montón [tamaño]; tamaño -; (abajo . 1 );
 . 4 borrar cualquier elemento de un montón [K] = montón [tamaño]; tamaño -. ; Down (K); hasta (K); 
 5. modificar cualquier elemento de la pila [k] =. x; abajo (k); hasta (k); 

heapsort 

int n-, m;
 int H [ 1000 ], CNT; 

void down ( int U) 
{ 
    int T = U;
     SI (U * 2 <= CNT && H [ u *2 ] <h [t]) t = u * 2 ;
    si (u * 2 + 1 <= cnt && h [u * 2 + 1 ] <h [t]) t = u * 2 + 1 ;
    si (u =! t) 
    { 
        swap (h [u], h [t]); 
        hacia abajo (t); 
    } 
} 

Anular hasta ( int u) 
{ 
    mientras que (u / 2 && h [u] <h [u / 2 ]) 
    { 
        swap (h [u], h [u / 2 ]); 
        u>> = 1 ; 
    } 
} 
 
Int main () 
{ 
    cin >> n >> m;
    para ( int i = 1 ; i <= n; i ++) cin >> h [i]; 
    cnt = n; 
    
    para ( int i = n / 2 ; i; i - ) abajo (i); 

    mientras que (m - ) 
    { 
        cin >> h [ 1 ] << "  " ; 
        h [ 1 ] = h [cnt - ]; 
        hacia abajo ( 1 ); 
    }    
    volver  0 ; 
}

 

Ordenamiento de burbuja :

1. La secuencia alrededor de uno de los elementos comparados a su vez, garantizar el derecho del elemento es siempre mayor que los elementos de la izquierda

2. Paso 1 se realiza de nuevo elementos de secuencia entre el n-1 restante

3. Para una secuencia de longitud n, un total de n-1 necesidad de realizar muela comparativa

Ordenar rápida : Número de excavación de relleno + divide y vencerás

vector < int > página_web (vector < int > q, int l, int r) 
{ 
    si (l> = r) de retorno ;
    int i = l - 1 ;
    int j = r + 1 ;
    int x = q [l + r >> 1 ];
    mientras que (i < j) 
    { 
          hago i ++; mientras que (q [i] < x);
          hacer j -; mientras que (q [j]> x);
          si (i < j) swap (q [i], q [j]);
    }
    página_web (q, l, j); 
    página_web (q, j + 1 , r); 
}

 

Combinar tipo :

1. La secuencia de cada descomposición binaria ---- dividida

---- 2. La secuencia de los segmentos combinados después de una especie de combinación divididas veintidós

vector < int > tmp;
void merge_sort (vector < int > q, int l, int r) 
{ 
    si (l> = r) de retorno ; 
    mediados auto = l + r >> 1 ; 
    merge_sort (q, l, MID); 
    merge_sort (q, mid + 1 , r);
    int i = l;
    int j = mediados + 1 ;
    int k = 0 ;
    mientras que (i <= j) 
    { 
          si (q [i] <= q [j]) tmp [k ++] = q [i ++];
          más                    tmp [k ++] = q [j ++ ]; 
    } 
    Mientras que (i <= centro) tmp [k ++] = q [i ++ ];
    mientras que (j <= r) tmp [k ++] = q [j ++ ];
    para ( int i = l, j = 0 ; i <= r; i ++, j ++) q [i] = tmp [j]; 
}

 

algoritmo KMP

KMP algoritmo utilizando la información clave después de que el juego no funciona, para reducir al mínimo el número de match principal cadena de patrón de encordado para lograr el propósito del juego rápidamente. implementación específica es implementar una función next (), la función en sí contiene información de patrón de coincidencia de cadenas parcial. El tiempo de complejidad de O (m + n)

En algoritmo simple, cada vez que coincida con todo el calendario de partidos antes de fracasos tenían que dar, por lo que la complejidad del tiempo es muy alta, mientras que K M P esencia de las mentiras algoritmo KMP no procede del principio de la cadena después de cada partido modo de fallo coincide, pero el partido de acuerdo a los datos conocidos, salto atrás a un lugar concreto de coincidencia de la cadena patrón continúa, y para cada bit, tiene una única "snap-back posición de una específica" cadena de patrón, con el consiguiente ahorro de tiempo.

Pointer desajuste: posición i valor es la cadena patrón S (subíndice a a 1 i) matriz desajuste de la longitud máxima del prefijo común y el sufijo adecuado verdadera

// buscar desajuste matriz
 // es la cadena en sí mismo un proceso de coincidencia de patrones en sí, sólo decir la matriz se construye con una negligencia en el sentido de la cadena de patrón, con las mismas ideas emparejar la secuencia de texto 
int el n- = s1.length ();
 int m = s2.legnth ();
 para ( int I = 1. ; I <m; I ++ ) 
{ 
    el mientras que K = (&& S2 K [I] = S2 [K]!) KMP [K];
     IF (S2 [I] = S2 [k]) KMP [I + 1. ] ++ = k; 
} 

// buscar cadenas en los patrones de la cadena de texto
 // donde k puede observar que el modo actual se ha acabado a coincidir con una cadena de Final posición, también puede entenderse como un esquema de varios de la cadena coincidente 

K = 0 ;
 para ( int I = 0; I <n-; ++ I) 
{ 
    el tiempo (S1 && K [i] = S2 [K]) = K! KMP [K];
     // comparación falla a lo largo de la espalda conjunto cadena de patrón de salto puntero del desajuste el primero no se levantaba. 
    IF (S1 [I] == S2 [K]) K ++;     // éxito partido, la cadena patrón de partido a la posición hecho +1 
    IF (K == m) COUT << I - m + 2 << endl;     / / encontrar una cadena de patrón, ubicación de salida. 
}

 

diagrama de la ruta crítica

No análisis de la ruta crítica es un uso más importante de la fig. Cada nodo representa un tiempo para dar la acción que debe ser realizada, así como que se necesita para completar la acción. Así, la operación de la gráfica de la figura nodo.

Lado en la figura representa una relación de prioridad: una arista (v, w) v significa que la acción debe completarse antes del inicio de la acción w.

 

 Condiciones comenzaron último que es completar todos los pre-evento, previa al evento pueden especificarse en paralelo entre sí, pero el tiempo de finalización más temprano es el camino más largo

 

Supongo que te gusta

Origin www.cnblogs.com/byene/p/12640382.html
Recomendado
Clasificación