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)