Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
OBJETIVOS DE INVENTAR O COMPUTADOR?? Ordenação (computação) • O problema de procurar “pesquisar” alguma informação numa tabela ou num catálogo é muito comum: 1.Procurar o telefone de uma pessoa no catálogo; 2.Procurar o nº da conta de certo cliente; 3.Consultar um determinado saldo em um terminal automático. • Ordenação é o ato de se colocar os elementos de uma seqüência de informações, ou dados, em uma ordem predefinida. • O termo técnico em inglês para ordenação é SORTING, cuja tradução literal é "classificação". • Algumas ordens são facilmente definidas. Por exemplo: • a ordem numérica; • a ordem alfabética; • crescentes ou decrescentes; O principal objetivo de se ordenar é facilitar a recuperação de informação. •Contudo, existem ordens, especialmente de dados compostos, que podem ser não triviais de se estabelecer. • Exemplo: nomes se forem iguais, deve-se estabelecer outros critérios para a perfeita ordenação. • A ordenação de um vetor significa fazer com que os seus elementos estejam colocados de acordo com algum critério de ordenação. • Entre os mais importantes, podemos citar bubble sort (ou ordenação por flutuação), heap sort (ou ordenação por heap), insertion sort (ou ordenação por inserção), merge sort (ou ordenação por mistura) e o quicksort. •Os métodos de ordenação são classificados em dois grupos. • Se o arquivo a ser ordenado cabe toda na memória principal, então o método de ordenação é chamado ordenação interna. Cabe em um array • Se o arquivo a ser ordenado não cabe na memória principal e por isso for armazenado em fita ou disco então o método de ordenação é chamado ordenação externa. Diferenças entre os métodos: • Em um método de ordenação interna, qualquer registro pode ser imediatamente acessado. • Em um método de ordenação externa, os registros são acessados seqüencialmente ou em grandes blocos. _ A maioria dos métodos de ordenação é baseada em comparações das chaves. _ Existem métodos de ordenação que utilizam o princípio da distribuição. Exemplo de ordenação por distribuição: Considere o problema de ordenar um baralho com 52 cartas na ordem: A < 2 < 3 < _ _ _ < 10 < J < Q < K e ◊ Algoritmo: 1. Distribuir as cartas abertas em treze montes: ases, dois, três, : : :, reis. 2. Colete os montes na ordem especificada. 3. Distribua novamente as cartas abertas em quatro montes: paus, ouros, copas e espadas. 4. Colete os montes na ordem especificada. Ordenação Interna • São métodos simples, mas considerados eficientes. • Adequados para pequenos arquivos; • Produzem programas pequenos e de fácil entendimento. – Ordenação por Seleção ; Ordenação por Inserção – Shellsort; – Quicksort; – Heapsort Na escolha de um algoritmo de ordenação interna deve ser considerado o tempo gasto pela ordenação. Sendo n o número registros no arquivo, as medidas de complexidade relevantes são: 1. Número de comparações C(n) entre chaves. 2. Número de movimentações M(n) de itens do arquivo. O uso econômico da memória disponível é um requisito primordial na ordenação interna. Ordenação por Seleção Algoritmo: 1) Selecione o menor item do vetor. 2) Troque-o com o item da primeira posição 1 do vetor. 3) Repita essas duas operações com os n -1 itens restantes, depois com os n -2 itens, até que reste apenas um elemento. A idéia básica do Método de Seleção é, a cada passagem pelo vetor, selecionar o menor elemento e colocar este elemento o mais a esquerda possível. Para isto deve-se trocar as posições dos elementos do vetor. 1.Na primeira passagem troca-se o menor elemento com o que está na primeira posição, 2.Na segunda passagem troca-se o segundo menor elemento com o que está na segunda posição . Assim por diante... Desse modo, na passagem i só se deve procurar o menor elemento a partir do i-ésimo até o Nésimo elemento do vetor (os elementos anteriores já estarão ordenados). Note-se que serão necessárias (N-1) passagens, pois, na última passagem, o N-ésimo elemento já estará na sua posição correta. Vantagens: 1.Custo linear no tamanho da entrada para o número de movimentos de registros. 2.É o algoritmo a ser utilizado para arquivos com registros muito grandes. 3.É muito interessante para arquivos pequenos. Desvantagens: 1. O fato de o arquivo já estar ordenado não ajuda em nada, pois o custo continua quadrático. 2.O algoritmo não é estável. ALGORITMO EM PORTUGOL {Método da Seleção} declarar I, J {variáveis de controle}, N {tamanho do vetor}, AUX {variável auxiliar para a troca}, :inteiros A {vetor a ser ordenado} vetor com no máximo 30 elementos inteiros inicio solicitar a entrada do tamanho do vetor, ler (N) solicitar a entrada dos dados do vetor para I de 1 até N faça ler A[I] fim para para I de 1 até N faça escrever A[I] fim para para I de 1 até N-1 para J de I+1 até N se A[I] > A[J] então início AUX ← A[I] A[I] ← A[J] A[J] ← AUX Fim fim-se fim para fim para para I de 1 até N faça escrever A[I] fim para fim-programa //A variável I controla o pivô.A variável J controla os elementos a frente do pivô Selectsort (int data[],int n) { int min,tmp,i,j,min_id; for (i=0; i<n-1; i++) { min = data[i]; for (j=i+1; j<n; j++) if (data[j] < min) { min = data[j]; min_id = j; } tmp = data[i]; data[i] = data[min_id]; data[min_id] = tmp; } }