Android optimización de la estructura de trama; estructuras de datos (matrices)

definiciones

Array (Array) es una estructura de la tabla lineal, que utiliza un conjunto de espacio de memoria contigua para almacenar un conjunto de datos que tienen el mismo tipo.
Hay algunas palabras clave en esta definición:

mesa lineal

La tabla de datos se llama una fila lineal como la obtención de imágenes de una estructura de línea. Esto es una relación lineal entre los elementos de datos en la tabla es relación uno a uno, es decir, además de la primera y última elemento de datos, otros elementos de datos son de extremo a extremo.
Mesa lineal que comprende: una mesa y una lista de la secuencia ligada
tabla de secuencia de dirección es continua en el interior del elemento, tal como una matriz o matrices implementado con cola, la pila, y otros
nodos de lista de direcciones que no son continuas, conectados entre sí por un puntero como se muestra a continuación:

Mesa lineal puede explicado específicamente con referencia a la forma lineal

La mesa lineal lineal concepto de equipo de mesa es la cuota, como un árbol binario, pila, el dibujo y así sucesivamente. Se llama tabla no lineal se debe a que, entre la tabla de datos no lineal no es uno de contexto, de la siguiente manera:

 

Y espacio de memoria contigua del mismo tipo

Este límite se basa en la definición, y por lo tanto puede requerir solamente un elemento de la matriz se calcula con respecto a la primera dirección (una base_address) offset, se puede calcular fácilmente la dirección del elemento.
Para una longitud de 4 Matriz de tipo int int [] arr = new int [ 4]; Case. Al inicializar la matriz, el ordenador dará una matriz continua arr espacio de memoria asignado 1000-1015, en el que la primera dirección es base_address = 1000, como se muestra a continuación:

Cada equipo va a asignar una dirección física de la celda de memoria, entonces el ordenador para acceder a los datos en la memoria por la dirección física. Cuando el equipo necesita acceder a un elemento de la matriz es, puede ser abordado por la siguiente fórmula para calcular la dirección del elemento de memoria:

arr[i]_address = base_address + i * data_type_size

En la que i representa los elementos necesarios para acceder a la norma, un representante base_address de la primera dirección, data_type_size_ que representa cada elemento del tamaño de la memoria, tal como se almacena en la matriz de tipo int java, por lo data_type_size_ es de 4 bytes.

El funcionamiento básico de la matriz

  • Insertar
  • supresión
  • operación de búsqueda

Insertar

Hay dos casos de inserción.

在数组的末尾插入元素

Si se inserta la operación en el extremo, sin mover la posición de cualquier elemento, añadir directamente una nueva posición en el último conjunto de elementos de lata. Así, el extremo de inserción de una matriz de complejidad de tiempo de datos es O (1)

在数组头部插入元素。

Si el elemento se inserta en la posición de la cabeza, y que con el fin de mantener la continuidad de la memoria de datos, todas las necesidades de datos a secuencialmente se mueven hacia atrás uno, el peor complejidad de tiempo caso es O (n)

supresión

Y la inserción de elementos similares, si desea eliminar la matriz de datos de la posición K, con el fin de mantener la continuidad de la memoria, es necesario posición K + 1 hasta el último elemento se mueven hacia adelante uno. También dos casos

删除数组末尾元素

El mejor tiempo de complejidad es O (1)

删除数组头部元素

El peor tiempo de complejidad es O (n)

de acceso aleatorio

Cuando ya sabemos un índice elemento de la matriz, que puede acceder directamente al elemento a través del índice, tal como suponiendo que ya sabemos el número 23 en la matriz [10, 15, 23, 45] los subíndices 2, por lo que podemos [2] para señalar 23 arr directamente. Por lo tanto una matriz de acceso aleatorio tiempo la complejidad es O (1)

operación de búsqueda

Supongamos que necesitamos array [10, 15, 23, 45] encontrar si hay 23, porque no sabemos qué elemento 23 es el número del subíndice, desde se requiere principio hasta el final con el fin de recorrer cada elemento de la matriz, y Se determina si o igual a 23.

Código puede ser como sigue:

for (let index = 0; index < array.length; index++) {
    if(element === array[index]) {
      return index;
    }
  }

Así, un elemento de la matriz para encontrar la complejidad de tiempo es O (n)

Una serie de tiempo Resumen complejidad

Publicado 56 artículos originales · ganado elogios 1 · vistas 2894

Supongo que te gusta

Origin blog.csdn.net/chuhe1989/article/details/104989011
Recomendado
Clasificación