Você está na página 1de 2

Ordenao por insero (Insertion Sort)

Ideia Bsica
O mtodo de ordenao por insero o mais rpido entre os mtodos bsicos(mtodo das bolhas, mtodo
de seleo direta e mtodo de ordenao por insero).
A principal caracterstica deste mtodo consiste em ordenar um conjunto de elementos, utilizando um subconjunto
ordenado localizado em seu inicio, e em cada interao, acrescentamos a este subconjunto mais um elemento, at
que atingimos o ltimo elemento do conjunto assim com que ele se torne ordenado.
Mtodo
Este mtodo, considera-se o array(vetor) a ordenar como um array dividido em dois subarrays (esquerdo e
direito), com o da esquerda ordenado e o da direita desordenado. Os elementos so retirados um de cada vez do
sub-array da direita (no ordenado), e move-se esse elemento para o sub-array da esquerda, inserindo-o na posio
correta por forma a manter o sub -array da esquerda ordenado, terminando o processo quando o sub-array da direita
ficar vazio.
Eficincia
O tempo gasto para executar o algoritmo do Insertion Sort depende do valor de entrada. Ordenar milhares de
nmeros leva bem mais tempo do que ordenar trs nmeros. Alm disso, o Insertion Sort pode levar diferentes
quantidades de tempo para ordenar duas sequncias de entrada de mesmo tamanho dependendo do quanto elas j
esto ordenadas.
Algoritmo
Este algoritmo considera o array como contendo uma parte ordenada (subarray da esquerda) e uma parte
no ordenada (sub-array da direita).
Para ordenar os seguintes dados por ordem crescente, processa-se do seguinte modo:
1. Iniciar a parte ordenada com o primeiro elemento do vector;

2. Selecionar um elemento do sub-array da direita(no ordenado);


ATENO No criado um novo vetor!! E de forma alguma o elemento selecionado retirado do vetor, nas figuras
abaixo a separao existente entre os elemnentos somente para diferenciar a parte j ordenada da parte noordenada, mas ambas as partes pertencem ao mesmo vetor.

3. Inserir o elemento na posio correta (ordenado) no sub-array da esquerda;

4. Voltar ao passo 2.Sempre inserindo com posio ordenada.

5. Pode-se terminar o processo quando o sub-array da direita ficar vazio.

Uma das vantagens de se usar a ordenao por insero que ela ordena o vetor somente quando
realmente necessrio. Se o vetor j est em ordem, nenhum movimento substancial realizado; somente a varivel
temp ou chave inicializada e o valor estocado nela movido de volta para a mesma posio. O algoritmo
reconhece que parte do vetor j est ordenado e pra a execuo. Mas ele reconhece apenas isso, e o fato de que
elementos podem j estar em suas posies apropriadas no explorado. Em conseqncia, eles podem ser
movidos dessas posies e voltarem mais tarde. Outra desvantagem que, se um item est sendo inserido,todos os
elementos maiores do que ele tm que ser movidos.

EM CDIGO:

FUNO EM C++
#include<stdio.h>
#include<iostream>
using namespace std;
void insertion(int a[], int t) {
int i,j,chave;
for (int i=1; i< t; i++) {
chave = a[i];
j = i-1;
while (chave<a[j] && j>=0) {
a[j+1] = a[j];
j=j-1;
}
a[j+1] = chave;
}
for(i=0;i<t;i++){
cout<<a[i];
}}
main(){
int i,t,j;
cout<<"\nDigite tamanho do vetor: ";
cin>>t;
int a[t];
for(i=0;i<t;i++){
cout<<"\nDigite valor: ";
cin>>a[i];
}
cout<<"Ordenado";
insertion(a, t);
cout<<"\n\n";
getchar();getchar();
}

Você também pode gostar