Introdução às funções de matriz em C

Funções de matriz em C é um tipo de estrutura de dados que contém vários elementos do mesmo tipo de dados. O tamanho de uma matriz é fixo e os elementos são coletados de maneira seqüencial. Pode haver diferentes dimensões de matrizes e a programação C não limita o número de dimensões em uma matriz.

Diferentes funções da matriz em C

Existem diferentes funções que podem ser executadas em matrizes.

1) Atravessando

Atravessar uma matriz significa passar por cada elemento de uma matriz exatamente uma vez. Começamos do primeiro elemento e vamos para o último elemento. Um exemplo de um programa desse tipo que executa uma operação de deslocamento em uma matriz linear é dado abaixo na linguagem C.

Código

#include
void main()
(
int array() = (1, 2, 3, 4, 5);
int i, n = 5;
printf(" The array elements are: \n " );
for( i=0;i < n; i++)
(
printf(" array(%d) = %d \n ", i, array(i) );
)
)

Resultado:

2) Pesquisando

A operação de pesquisa é usada para encontrar um item ou elemento de dados específico em uma Matriz. Podemos realizar a pesquisa em uma matriz não classificada com a ajuda da travessia da matriz. O deslocamento linear do primeiro elemento até o último elemento pode ser usado para pesquisar se um determinado número está presente em uma matriz e também pode ser usado para encontrar sua posição, se presente.

Isso é feito comparando cada elemento com o elemento fornecido (que deve ser pesquisado). Depois que o elemento é encontrado, a operação de pesquisa é interrompida. Aqui está um exemplo para mostrar a operação de pesquisa realizada em uma matriz em C

Código

#include
int findElement(int arr(), int n, int key)
(
int i;
for (i = 0; i < n; i++)
if (arr(i) == key
return i;
return -1;
)
int main()
(
int arr() = (1, 4, 0, 6, 3);
int n = sizeof(arr) / sizeof(arr(0));
int key = 4;
int position = findElement(arr, n, key);
if (position == - 1)
printf("Element not found");
else
printf("Element Found at Position: %d", position + 1 );
return 0;
)

Resultado:

3) Inserção

A operação de inserção é usada para adicionar um novo elemento na matriz. Quando especificamos o elemento e a posição específicos em que ele deve ser adicionado à matriz, realizamos a operação de inserção. No entanto, o tamanho da matriz não é perturbado durante a execução desta operação. Um elemento será inserido em uma matriz apenas se tiver espaço suficiente para adicioná-lo. Se o tamanho de uma matriz já estiver cheio, um novo elemento não poderá ser adicionado. Um exemplo para mostrar a operação de inserção em uma matriz não classificada em C.

Código

#include
int insertSorted(int arr(), int n, int key, int capacity)
(
if (n >= capacity)
return n;
arr(n) = key;
return (n + 1);
)
int main()
(
int arr(20) = (8, 5, 6, 9, 0, 7) ;
int capacity = sizeof(arr) / sizeof(arr(0));
int n = 6;
int i, key = 2;
printf("\n Before Insertion: ");
for (i = 0; i < n; i++)
printf("%d ", arr(i));
n = insertSorted(arr, n, key, capacity);
printf("\n After Insertion: ");
for (i = 0; i < n; i++)
printf("%d ", arr(i));
return 0;
)

Resultado:

4) Exclusão

Na operação de exclusão, o elemento que já existe na matriz é pesquisado (usando a pesquisa linear) e excluído, seguido pela mudança de elementos. O usuário entra na posição do elemento que deve ser excluído da matriz. A operação de exclusão, assim como a operação de inserção, não afeta o tamanho da matriz. Além disso, a posição do elemento a ser excluído deve estar dentro do tamanho da matriz, pois a exclusão de um elemento além do tamanho da matriz não é possível. Programa C para mostrar a operação de exclusão em uma matriz não classificada.

Código

#include
int findElement(int arr(), int n, int key);
int deleteElement(int arr(), int n, int key)
(
int pos = findElement(arr, n, key);
if (pos == - 1)
(
printf("Element not found");
return n;)
int i;
for (i = pos; i < n - 1; i++)
arr(i) = arr(i + 1);
return n - 1;
)
int findElement(int arr(), int n, int key)
(
int i;
for (i = 0; i < n; i++)
if (arr(i) == key)
return i;return - 1;
)
int main()
(
int i;
int arr() = (1, 5, 3, 4, 2);
int n = sizeof(arr) / sizeof(arr(0));
int key = 3;
printf("Array before deletion\n");
for (i = 0; i < n; i++)
printf("%d ", arr(i));
n = deleteElement(arr, n, key);
printf("\nArray after deletion\n");
for (i = 0; i < n; i++)
printf("%d ", arr(i));
return 0;
)

Resultado:

5) Classificação

Esta operação é executada para classificar uma matriz em uma ordem fixa, ou seja, crescente ou decrescente. Aqui está um exemplo de operação de classificação em uma matriz em C

Código

#include
void main()
(
int i, j, a, n, number(30);
printf("Enter the value of N \n");
scanf("%d", &n);
printf("Enter the numbers \n");
for (i = 0; i < n; ++i)
scanf("%d", &number(i));
for (i = 0; i < n; ++i)
(
for (j = i + 1; j < n; ++j)
(
if (number(i) > number(j))
(
a = number(i);
number(i) = number(j);
number(j) = a;
)
)
)
printf("The numbers arranged in ascending order are given below \n");
for (i = 0; i < n; ++i)
printf("%d\n", number(i));
)

Resultado:

Diferentes maneiras de classificar uma matriz

Abaixo estão os diferentes métodos de classificação para Matriz:

1) Classificação da bolha

A classificação por bolha compara todos os elementos um por um e os classifica com base em seus valores. Ele começa comparando o primeiro elemento com o segundo; se o primeiro elemento for maior que o segundo, ele trocará os dois elementos e continuará comparando o segundo e o terceiro elementos, e assim por diante.

2) Classificação da Seleção

A idéia básica por trás da classificação de seleção é encontrar o menor elemento na matriz não classificada, substituindo-o pelo primeiro elemento. Continue o mesmo processo com o restante da matriz não classificada, ou seja, da segunda posição, depois da terceira e assim por diante.

3) Mesclar Classificação

Esse método de classificação é baseado na técnica de dividir e conquistar. Ele divide a matriz em duas sub-matrizes iguais e continua até que cada sub-matriz contenha um único elemento e as mescla de maneira classificada, resultando em uma matriz classificada.

4) Classificação de inserção

No tipo de inserção, começamos com o segundo elemento. Os elementos da matriz são comparados entre si de maneira seqüencial. O elemento atual (o valor a ser classificado) é comparado com todos os elementos na sub-matriz classificada. Todos os elementos na sub-matriz classificada que são maiores que o elemento atual são alterados e o valor atual é inserido. Esse processo é repetido até que toda a matriz seja classificada.

5) Classificação Rápida

O Quicksort, assim como a classificação de mesclagem, também é baseado no algoritmo de divisão e conquista. Nesse método, um elemento é selecionado como o pivô (geralmente o primeiro elemento). Então, partições de uma matriz são feitas em torno do pivô selecionado, ou seja, todos os elementos menores que o pivô formarão uma sub-matriz e todos os elementos maiores que a pivô formarão outra. O procedimento também é repetido com as sub-matrizes até que toda a matriz seja classificada.

6) Heap Sort

O algoritmo de classificação de heap é baseado na comparação. O elemento máximo é selecionado e colocado na posição final. Em seguida, o segundo maior elemento é encontrado e colocado na segunda última posição. Este processo é repetido para todos os elementos.

Artigos recomendados

Este é um guia para Funções de matriz em C. Aqui discutimos as diferentes funções e maneiras de classificar uma matriz. Você também pode consultar nossos outros artigos relacionados para saber mais -

  1. Matrizes em C ++
  2. Matrizes em R
  3. Funções em R
  4. Vantagens da matriz
  5. Tipos de funções de matriz em PHP e exemplos