Estruturas de dados e algoritmos - Arrays

Array é um contêiner que pode conter um número fixo de itens e esses itens devem ser do mesmo tipo. A maioria das estruturas de dados faz uso de arrays para implementar seus algoritmos. A seguir estão os termos importantes para entender o conceito de Array.

  • Element - Cada item armazenado em uma matriz é chamado de elemento.

  • Index - Cada localização de um elemento em uma matriz possui um índice numérico, que é usado para identificar o elemento.

Representação de Matriz

Os arrays podem ser declarados de várias maneiras em diferentes idiomas. Para ilustração, vamos tomar a declaração do array C.

Os arrays podem ser declarados de várias maneiras em diferentes idiomas. Para ilustração, vamos tomar a declaração do array C.

Conforme a ilustração acima, a seguir estão os pontos importantes a serem considerados.

  • O índice começa com 0.

  • O comprimento do array é 10, o que significa que ele pode armazenar 10 elementos.

  • Cada elemento pode ser acessado por meio de seu índice. Por exemplo, podemos buscar um elemento no índice 6 como 9.

Operações básicas

A seguir estão as operações básicas suportadas por uma matriz.

  • Traverse - imprime todos os elementos do array um por um.

  • Insertion - Adiciona um elemento no índice fornecido.

  • Deletion - Exclui um elemento no índice fornecido.

  • Search - Pesquisa um elemento usando o índice fornecido ou pelo valor.

  • Update - Atualiza um elemento no índice fornecido.

Em C, quando um array é inicializado com size, ele atribui valores padrão a seus elementos na seguinte ordem.

Tipo de dados Valor padrão
bool falso
Caracteres 0
int 0
flutuador 0,0
em dobro 0.0f
vazio
wchar_t 0

Operação transversal

Esta operação consiste em percorrer os elementos de uma matriz.

Exemplo

O programa a seguir percorre e imprime os elementos de uma matriz:

#include <stdio.h>
main() {
   int LA[] = {1,3,5,7,8};
   int item = 10, k = 3, n = 5;
   int i = 0, j = n;   
   printf("The original array elements are :\n");
   for(i = 0; i<n; i++) {
      printf("LA[%d] = %d \n", i, LA[i]);
   }
}

Quando compilamos e executamos o programa acima, ele produz o seguinte resultado -

Resultado

The original array elements are :
LA[0] = 1 
LA[1] = 3 
LA[2] = 5 
LA[3] = 7 
LA[4] = 8

Operação de Inserção

A operação de inserção é inserir um ou mais elementos de dados em uma matriz. Com base no requisito, um novo elemento pode ser adicionado no início, no final ou em qualquer índice da matriz.

Aqui, vemos uma implementação prática da operação de inserção, onde adicionamos dados no final da matriz -

Exemplo

A seguir está a implementação do algoritmo acima -

#include <stdio.h>

main() {
   int LA[] = {1,3,5,7,8};
   int item = 10, k = 3, n = 5;
   int i = 0, j = n;
   
   printf("The original array elements are :\n");

   for(i = 0; i<n; i++) {
      printf("LA[%d] = %d \n", i, LA[i]);
   }

   n = n + 1;
	
   while( j >= k) {
      LA[j+1] = LA[j];
      j = j - 1;
   }

   LA[k] = item;

   printf("The array elements after insertion :\n");

   for(i = 0; i<n; i++) {
      printf("LA[%d] = %d \n", i, LA[i]);
   }
}

Quando compilamos e executamos o programa acima, ele produz o seguinte resultado -

Resultado

The original array elements are :
LA[0] = 1 
LA[1] = 3 
LA[2] = 5 
LA[3] = 7 
LA[4] = 8 
The array elements after insertion :
LA[0] = 1 
LA[1] = 3 
LA[2] = 5 
LA[3] = 10 
LA[4] = 7 
LA[5] = 8

Para outras variações da operação de inserção de matriz, clique aqui

Operação de Exclusão

A exclusão se refere à remoção de um elemento existente do array e à reorganização de todos os elementos de um array.

Algoritmo

Considerar LA é uma matriz linear com N elementos e K é um número inteiro positivo tal que K<=N. A seguir está o algoritmo para excluir um elemento disponível na K- ésima posição de LA.

1. Start
2. Set J = K
3. Repeat steps 4 and 5 while J < N
4. Set LA[J] = LA[J + 1]
5. Set J = J+1
6. Set N = N-1
7. Stop

Exemplo

A seguir está a implementação do algoritmo acima -

#include <stdio.h>

void main() {
   int LA[] = {1,3,5,7,8};
   int k = 3, n = 5;
   int i, j;
   
   printf("The original array elements are :\n");
	
   for(i = 0; i<n; i++) {
      printf("LA[%d] = %d \n", i, LA[i]);
   }
    
   j = k;
	
   while( j < n) {
      LA[j-1] = LA[j];
      j = j + 1;
   }
	
   n = n -1;
   
   printf("The array elements after deletion :\n");
	
   for(i = 0; i<n; i++) {
      printf("LA[%d] = %d \n", i, LA[i]);
   }
}

Quando compilamos e executamos o programa acima, ele produz o seguinte resultado -

Resultado

The original array elements are :
LA[0] = 1 
LA[1] = 3 
LA[2] = 5 
LA[3] = 7 
LA[4] = 8 
The array elements after deletion :
LA[0] = 1 
LA[1] = 3 
LA[2] = 7 
LA[3] = 8

Operação de Pesquisa

Você pode realizar uma pesquisa por um elemento da matriz com base em seu valor ou índice.

Algoritmo

Considerar LA é uma matriz linear com N elementos e K é um número inteiro positivo tal que K<=N. A seguir está o algoritmo para encontrar um elemento com um valor de ITEM usando a pesquisa sequencial.

1. Start
2. Set J = 0
3. Repeat steps 4 and 5 while J < N
4. IF LA[J] is equal ITEM THEN GOTO STEP 6
5. Set J = J +1
6. PRINT J, ITEM
7. Stop

Exemplo

A seguir está a implementação do algoritmo acima -

#include <stdio.h>

void main() {
   int LA[] = {1,3,5,7,8};
   int item = 5, n = 5;
   int i = 0, j = 0;
   
   printf("The original array elements are :\n");
	
   for(i = 0; i<n; i++) {
      printf("LA[%d] = %d \n", i, LA[i]);
   }
    
   while( j < n){
      if( LA[j] == item ) {
         break;
      }
		
      j = j + 1;
   }
	
   printf("Found element %d at position %d\n", item, j+1);
}

Quando compilamos e executamos o programa acima, ele produz o seguinte resultado -

Resultado

The original array elements are :
LA[0] = 1 
LA[1] = 3 
LA[2] = 5 
LA[3] = 7 
LA[4] = 8 
Found element 5 at position 3

Operação de atualização

A operação de atualização refere-se à atualização de um elemento existente da matriz em um determinado índice.

Algoritmo

Considerar LA é uma matriz linear com N elementos e K é um número inteiro positivo tal que K<=N. A seguir está o algoritmo para atualizar um elemento disponível na K- ésima posição de LA.

1. Start
2. Set LA[K-1] = ITEM
3. Stop

Exemplo

A seguir está a implementação do algoritmo acima -

#include <stdio.h>

void main() {
   int LA[] = {1,3,5,7,8};
   int k = 3, n = 5, item = 10;
   int i, j;
   
   printf("The original array elements are :\n");
	
   for(i = 0; i<n; i++) {
      printf("LA[%d] = %d \n", i, LA[i]);
   }
    
   LA[k-1] = item;

   printf("The array elements after updation :\n");
	
   for(i = 0; i<n; i++) {
      printf("LA[%d] = %d \n", i, LA[i]);
   }
}

Quando compilamos e executamos o programa acima, ele produz o seguinte resultado -

Resultado

The original array elements are :
LA[0] = 1 
LA[1] = 3 
LA[2] = 5 
LA[3] = 7 
LA[4] = 8 
The array elements after updation :
LA[0] = 1 
LA[1] = 3 
LA[2] = 10 
LA[3] = 7 
LA[4] = 8