Exercício V: Daniel
o Método Bubble: Descrição do métido e Exemplo
Descrição:
O Método de bubble , ou ordenação por flutuação (literalmente "por bolha"), é um algoritmo de ordenação dos mais simples. A ideia é percorrer o vetor diversas vezes, a cada passagem fazendo flutuar para o topo o maior elemento da sequência. Essa movimentação lembra a forma como as bolhas em um tanque de água procuram seu próprio nível, e disso vem o nome do algoritmo.
No melhor caso, o algoritmo executa operações relevantes, onde 'n' representa o número de elementos do vetor. No pior caso, são feitas operações. A complexidade desse
algoritmo é de Ordem quadrática. Por isso, ele não é recomendado para programas que precisem de velocidade e operem com quantidade elevada de dados.
o Método QuickSort: Descrição do métido e Exemplo
Descrição:
Quicksort é um método de ordenação muito rápido e eficiente, inventado por C.A.R. Hoare em 1960.
Este método adota a estratégia de divisão e conquista. A estratégia consiste em
rearranjar as chaves de modo que as chaves "menores" precedam as chaves "maiores". Em seguida o Quicksort ordena as duas sublistas de chaves menores e maiores
recursivamente até que a lista completa se encontre ordenada. Os passos são: Escolha um elemento da lista, denominado pivô; Rearranje a lista de forma que todos os elementos anteriores ao pivô sejam menores que ele, e todos os elementos posteriores ao pivô sejam maiores que ele. Ao fim do processo o pivô estará em sua posição final e haverá duas sublistas não ordenadas. Essa operação é denominada partição;
Recursivamente ordene a sublista dos elementos menores e a sublista dos elementos maiores; A base da recursão são as listas de tamanho zero ou um, que estão sempre ordenadas. O processo é finito, pois a cada iteração pelo menos um elemento é posto em sua posição final e não será mais manipulado na iteração seguinte.
o Método Direct Insertion: Descrição do métido e Exemplo
O Método de inserção direta(Direct Insertion), é um simples algoritmo de ordenação, eficiente quando aplicado a um pequeno número de elementos. Em termos gerais, ele percorre um vetor de elementos da esquerda para a direita e à medida que avança vai deixando os elementos mais à esquerda ordenados. O algoritmo de inserção funciona da mesma maneira com que muitas pessoas ordenam cartas em um jogo de baralho como o pôquer.
Características: - Menor número de trocas e comparações entre os algoritmos de ordenação O(n) quando o vetor está ordenado. - Pior caso O(n²)
o Método Shell: Descrição do métido e Exemplo
Descrição:
Criado por Donald Shell em 1959, publicado pela Universidade de Cincinnati, Shell sort é o mais eficiente algoritmo de classificação dentre os de
complexidade quadrática. É um refinamento do método de inserção direta. O algoritmo difere do método de inserção direta pelo fato de no lugar de considerar o array a ser ordenado como um único segmento, ele considera vários segmentos sendo aplicado o método de inserção direta em cada um deles.[3] Basicamente o algoritmo passa várias vezes pela lista dividindo o grupo maior em menores. Nos grupos menores é aplicado o método da ordenação por inserção.
A ordenação Shell utiliza a quebra sucessiva da sequência a ser ordenada e implementa a ordenação por inserção na sequência obtida. Por ser um método de complexidade O(n^2 ) não é aconselhável a sua implementação para sequências grandes, mas possui uma boa eficiência para as pequenas e medianas.
RAID
Índices:
o Índice Primário: definido pela PRIMARY KEY e ordenam fisicamente os registros
o Índice Secundário: Otimizam as consultas feitas pelo comando SELECT do SQL. Não ordenam fisicamente os registros gravados nas tabelas mas são utilizados na localização de registros
o Índice Denso: O arquivo de índice possui uma entrada para cada registro armazenado no arquivo de dados, sendo assim, quando procuramos um registro utilizando o índice, ele nos remete diretamente para uma posição específica no arquivo ou tabela
o Índice Esparso: Armazenam apenas uma entrada para cada blocode dados armazenado no disco. O arquivo de dados é dividido em diversos blocos endereçáveis a partir de um tamanho padrão (1024 bytes por exemplo). Com um pesquisa binária podemos ter um melhoria na performance de até 10 vezes
RAID
Redundant Array Inexpensive/Independent Disk (Conjunto Redundante de Discos Econômicos/Independentes)
o Agrupamento de discos rígidos que funcionam de forma concomitante ou paralela, com o objetivo de reduzir os riscos de danos causados a arquivos e aumentar a performance no acesso aos dados
o Os discos podem trabalhar independentemente ou de forma sincronizada, com os dados espalhados entre eles
o O RAID pode ser implementado via software ou hardware
Configuração
RAID 0
o São necessários ao menos 2 discos
o Os dados são fragmentados em segmentos consecutivos gravados sequencialmente em diferentes discos do conjunto
o O segmento possui um tamanho fixo, definido por bloco. Utiliza o máximo do espaço portanto sem garantia de redundância
o A idéia é espelhar as informações em um segundo disco de forma que o sistema grave os dados ao mesmo tempo nos dois discos
o Protege os dados, pois caso um dos discos falhe, o sistema continua
funcionando normalmente porém tem a desvantagem do custo, pois com dois Discos utiliza-se a área útil de apenas 1.
RAID 0 + 1
Exige pelo menos 4 discos na implementação com espelhamento de cada par de disco e os pares representando o RAID nivel 0
Ao mesmo tempo obtém-se ganho de desempenho e redundância
O problema de usar RAID 0 + 1, é o custo alto que se tem com os discos, pois no mínimo se é obrigado a possuir 4 discos.
RAID I
Distribui os dados entre os discos mas além do espelhamento como faz o RAID 0, possui duplicidade de discos
Para sua implementação são necessários pelo menos 2 discos. RAID 2
Possui semelhança com o RAID 4 mas exige um disco extra onde são gravadas informações de controle de erros (ECC - Error Correcting Code)
Ficou obsoleto depois que os novos drives de disco rígidos foram fabricados possuindo este controle no próprio circuito.
RAID 3
Possui como característica principal a gravação paralela com paridade O controle dos discos é bastante complexo uma vez que utiliza-se o menor
tamanho possível para o segmentos de dados
Desta forma, é necessário que todos os discos tenham seis eixos perfeitamente sincronizados, a fim de evitar o atraso na transferência dos dados.
RAID 4
Exige um conjunto de discos iguais, com um mínimo de 3 unidades. Um dos discos é reservado para gravação das informações de paridade dos dados, como no RAID 3
Os discos de gravação de dados são configurados para armazenar segmentos grandes o suficiente para conter um registro inteiro, o que permite a leitura independente dos dados.
RAID 5
Tem funcionamento similar ao RAID 4, mas em vez de gravar as informações de paridade num disco extra, elas são distribuídas pelos discos do conjunto,
gravando-se um ou mais bits em cada disco
A implementação é possível devido à criação de informações a partir de cálculos booleanos feitos com o dado útil (a informação a ser gravada no disco),
gravando essa paridade em um dos discos e de forma distribuída. RAID 6
Novo tipo de relacionamento que trabalha de forma similar ao RAID 5 Utiliza o dobro de bits de paridade, o que permite que no caso de dois discos