Matriz ordenada - Sorted array

Matriz ordenada
Modelo Variedade
Inventado 1945
Inventado por John von Neumann
Complexidade de tempo em notação grande O
Algoritmo Média Pior caso
Espaço Sobre) Sobre)
Procurar O (log n) O (log n)
Inserir Sobre) Sobre)
Excluir Sobre) Sobre)

Uma matriz classificada é uma estrutura de dados de matriz na qual cada elemento é classificado em ordem numérica, alfabética ou em alguma outra ordem e colocado em endereços igualmente espaçados na memória do computador. É normalmente usado em ciência da computação para implementar tabelas de pesquisa estáticas para conter vários valores que têm o mesmo tipo de dados . A classificação de um array é útil para organizar os dados de forma ordenada e recuperá-los rapidamente.

Métodos

Existem muitos métodos conhecidos pelos quais um array pode ser classificado, que incluem, mas não estão limitados a: classificação por seleção , classificação por bolha , classificação por inserção , classificação por mesclagem , classificação rápida , classificação por heapsort e classificação por contagem . Essas técnicas de classificação têm diferentes algoritmos associados e, portanto, há diferentes vantagens em usar cada método.

Visão geral

Matrizes classificadas são a estrutura de dados mais eficiente em termos de espaço com a melhor localidade de referência para dados armazenados sequencialmente.

Os elementos dentro de um array ordenado são encontrados usando uma pesquisa binária , em O (log n ); portanto, os arrays classificados são adequados para os casos em que é necessário procurar elementos rapidamente, por exemplo, como um conjunto ou estrutura de dados multiset . Essa complexidade para pesquisas é a mesma que para árvores de pesquisa binárias com autobalanceamento .

Em algumas estruturas de dados, uma matriz de estruturas é usada. Nesses casos, os mesmos métodos de classificação podem ser usados ​​para classificar as estruturas de acordo com alguma chave como um elemento de estrutura; por exemplo, classificando os registros dos alunos de acordo com os números, nomes ou notas do rolo.

Se estiver usando uma matriz dinâmica classificada , é possível inserir e excluir elementos. A inserção e exclusão de elementos em uma matriz ordenada é executada em O ( n ), devido à necessidade de deslocar todos os elementos após o elemento a ser inserido ou excluído; em comparação, uma árvore de pesquisa binária de autobalanceamento insere e deleta em O (log n ). No caso em que os elementos são excluídos ou inseridos no final, um array dinâmico classificado pode fazer isso em tempo O (1) amortizado, enquanto uma árvore de busca binária de autobalanceamento sempre opera em O (log n ).

Os elementos em uma matriz classificada podem ser consultados por seu índice ( acesso aleatório ) no tempo O (1), uma operação que leva tempo O (log n ) ou O ( n ) para estruturas de dados mais complexas.

História

John von Neumann escreveu o primeiro programa de classificação de array ( merge sort ) em 1945, quando o primeiro computador com programa armazenado ainda estava sendo construído.

Aplicativos de matrizes classificadas

Computação comercial

Organizações governamentais, empresas privadas e muitos aplicativos baseados na web têm que lidar com grandes quantidades de dados. Os dados geralmente terão que ser acessados ​​várias vezes. Manter os dados em um formato classificado permite uma recuperação rápida e fácil.

Em matemática discreta

Matrizes classificadas podem ser usadas para implementar o algoritmo de Dijkstra ou o algoritmo de Prim . Além disso, algoritmos como o algoritmo de Kruskal para encontrar árvores geradoras mínimas.

Em agendamento prioritário

No nível do sistema operacional , muitos processos estão pendentes por vez, mas eles podem lidar com apenas um processo por vez. Portanto, as prioridades estão associadas a cada processo. Em seguida, os processos são enviados para a CPU de acordo com a prioridade mais alta, usando uma matriz classificada de IDs de processo. Aqui, os processos são classificados de acordo com suas prioridades e a CPU é alocada para eles. O processo com a prioridade mais alta assume a primeira posição na matriz classificada. Portanto, é feito o agendamento prioritário dos processos do sistema.

No agendamento do trabalho mais curto primeiro

Este é o caso especial do agendamento prioritário. Aqui, os processos são classificados de acordo com o tempo de burst dos processos. O processo que requer o menor tempo será alocado na CPU primeiro. Conseqüentemente, os processos estão sendo enviados para a CPU de acordo com seu tempo de burst.

Priority scheduling.pdf
Processar Tempo de explosão
P1 3
P2 4
P3 1
P4 8
P5 6

Veja também

Referências