47
Ordena¸c˜ ao – BubbleSort e InsertionSort Instituto de Computa¸c˜ ao – Unicamp 10 de Maio de 2012

Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Ordenacao – BubbleSort e InsertionSort

Instituto de Computacao – Unicamp

10 de Maio de 2012

Page 2: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Roteiro

1 BubbleSort

2 InsertionSort

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 2 / 18

Page 3: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Ordenacao

Continuamos com o estudo de algoritmos para o problema deordenacao:

Dado uma colecao de elementos com uma relacao de ordem entre si,devemos gerar uma saıda com os elementos ordenados.

Novamente usaremos um vetor de inteiros como exemplo de colecao aser ordenada.

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 3 / 18

Page 4: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Bubble-Sort

Seja vet um vetor contendo numeros inteiros.

Devemos deixar vet em ordem crescente.

O algoritmos faz algumas iteracoes repetindo o seguinte:I Compare vet[0] com vet[1] e troque-os se vet[0] > vet[1].I Compare vet[1] com vet[2] e troque-os se vet[1] > vet[2].I .....I Compare vet[tam − 2] com vet[tam − 1] e troque-os se

vet[tam − 2] > vet[tam − 1].

Apos uma iteracao repetindo estes passos o que podemos garantir???I O maior elemento estara na posicao correta!!!

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 4 / 18

Page 5: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Bubble-Sort

Seja vet um vetor contendo numeros inteiros.

Devemos deixar vet em ordem crescente.

O algoritmos faz algumas iteracoes repetindo o seguinte:I Compare vet[0] com vet[1] e troque-os se vet[0] > vet[1].I Compare vet[1] com vet[2] e troque-os se vet[1] > vet[2].I .....I Compare vet[tam − 2] com vet[tam − 1] e troque-os se

vet[tam − 2] > vet[tam − 1].

Apos uma iteracao repetindo estes passos o que podemos garantir???I O maior elemento estara na posicao correta!!!

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 4 / 18

Page 6: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Bubble-Sort

Apos uma iteracao de trocas, o maior elemento estara na ultimaposicao.

Apos outra iteracao de trocas, o segundo maior elemento estara naposicao correta.

E assim sucessivamente.

Quantas iteracoes precisamos para deixar o vetor ordenado?

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 5 / 18

Page 7: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Bubble-Sort

Exemplo: (5,3,2,1,90,6).Valores sublinhados estao sendo comparados:(5, 3, 2, 1, 90, 6)(3, 5, 2, 1, 90, 6)(3, 2, 5, 1, 90, 6)(3, 2, 1, 5, 90, 6)(3, 2, 1, 5, 90, 6)(3, 2, 1, 5, 6, 90)

Isto termina a primeira iteracao de trocas. Temos que repetir todo oprocesso mais 4 vezes!!!

Mas notem que nao precisamos mais avaliar a ultima posicao!

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 6 / 18

Page 8: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Bubble-Sort

Exemplo: (5,3,2,1,90,6).Valores sublinhados estao sendo comparados:(5, 3, 2, 1, 90, 6)(3, 5, 2, 1, 90, 6)(3, 2, 5, 1, 90, 6)(3, 2, 1, 5, 90, 6)(3, 2, 1, 5, 90, 6)(3, 2, 1, 5, 6, 90)

Isto termina a primeira iteracao de trocas. Temos que repetir todo oprocesso mais 4 vezes!!!

Mas notem que nao precisamos mais avaliar a ultima posicao!

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 6 / 18

Page 9: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Bubble-Sort

Exemplo: (5,3,2,1,90,6).Valores sublinhados estao sendo comparados:(5, 3, 2, 1, 90, 6)(3, 5, 2, 1, 90, 6)(3, 2, 5, 1, 90, 6)(3, 2, 1, 5, 90, 6)(3, 2, 1, 5, 90, 6)(3, 2, 1, 5, 6, 90)

Isto termina a primeira iteracao de trocas. Temos que repetir todo oprocesso mais 4 vezes!!!

Mas notem que nao precisamos mais avaliar a ultima posicao!

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 6 / 18

Page 10: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Bubble-Sort

Exemplo: (5,3,2,1,90,6).Valores sublinhados estao sendo comparados:(5, 3, 2, 1, 90, 6)(3, 5, 2, 1, 90, 6)(3, 2, 5, 1, 90, 6)(3, 2, 1, 5, 90, 6)(3, 2, 1, 5, 90, 6)(3, 2, 1, 5, 6, 90)

Isto termina a primeira iteracao de trocas. Temos que repetir todo oprocesso mais 4 vezes!!!

Mas notem que nao precisamos mais avaliar a ultima posicao!

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 6 / 18

Page 11: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Bubble-Sort

Exemplo: (5,3,2,1,90,6).Valores sublinhados estao sendo comparados:(5, 3, 2, 1, 90, 6)(3, 5, 2, 1, 90, 6)(3, 2, 5, 1, 90, 6)(3, 2, 1, 5, 90, 6)(3, 2, 1, 5, 90, 6)(3, 2, 1, 5, 6, 90)

Isto termina a primeira iteracao de trocas. Temos que repetir todo oprocesso mais 4 vezes!!!

Mas notem que nao precisamos mais avaliar a ultima posicao!

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 6 / 18

Page 12: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Bubble-Sort

Exemplo: (5,3,2,1,90,6).Valores sublinhados estao sendo comparados:(5, 3, 2, 1, 90, 6)(3, 5, 2, 1, 90, 6)(3, 2, 5, 1, 90, 6)(3, 2, 1, 5, 90, 6)(3, 2, 1, 5, 90, 6)(3, 2, 1, 5, 6, 90)

Isto termina a primeira iteracao de trocas. Temos que repetir todo oprocesso mais 4 vezes!!!

Mas notem que nao precisamos mais avaliar a ultima posicao!

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 6 / 18

Page 13: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Bubble-Sort

Exemplo: (5,3,2,1,90,6).Valores sublinhados estao sendo comparados:(5, 3, 2, 1, 90, 6)(3, 5, 2, 1, 90, 6)(3, 2, 5, 1, 90, 6)(3, 2, 1, 5, 90, 6)(3, 2, 1, 5, 90, 6)(3, 2, 1, 5, 6, 90)

Isto termina a primeira iteracao de trocas. Temos que repetir todo oprocesso mais 4 vezes!!!

Mas notem que nao precisamos mais avaliar a ultima posicao!

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 6 / 18

Page 14: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Bubble-Sort

Exemplo: (5,3,2,1,90,6).Valores sublinhados estao sendo comparados:(5, 3, 2, 1, 90, 6)(3, 5, 2, 1, 90, 6)(3, 2, 5, 1, 90, 6)(3, 2, 1, 5, 90, 6)(3, 2, 1, 5, 90, 6)(3, 2, 1, 5, 6, 90)

Isto termina a primeira iteracao de trocas. Temos que repetir todo oprocesso mais 4 vezes!!!

Mas notem que nao precisamos mais avaliar a ultima posicao!

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 6 / 18

Page 15: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Bubble-Sort

O codigo abaixo realiza as trocas de uma iteracao.

Sao comparados e trocados, os elementos das posicoes: 0 e 1; 1 e 2;. . .; i − 1 e i .

Assumimos que de (i + 1) ate (tam − 1), o vetor ja tem os maioreselementos ordenados.

for(j=0; j < i; j++)if( vet[j] > vet[j+1] ){

aux = vet[j];vet[j] = vet[j+1];vet[j+1] = aux;

}

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 7 / 18

Page 16: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Bubble-Sort

O codigo abaixo realiza as trocas de uma iteracao.

Sao comparados e trocados, os elementos das posicoes: 0 e 1; 1 e 2;. . .; i − 1 e i .

Assumimos que de (i + 1) ate (tam − 1), o vetor ja tem os maioreselementos ordenados.

for(j=0; j < i; j++)if( vet[j] > vet[j+1] ){

aux = vet[j];vet[j] = vet[j+1];vet[j+1] = aux;

}

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 7 / 18

Page 17: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Bubble-Sort

void bubbleSort(int vet[], int tam){int i,j, aux;

for(i=tam-1; i>0; i--){

for(j=0; j < i; j++) //Faz trocas ate posic~ao iif( vet[j] > vet[j+1] ){

aux = vet[j];vet[j] = vet[j+1];vet[j+1] = aux;

}}

}

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 8 / 18

Page 18: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Bubble-Sort

void bubbleSort(int vet[], int tam){int i,j, aux;

for(i=tam-1; i>0; i--){

for(j=0; j < i; j++) //Faz trocas ate posic~ao iif( vet[j] > vet[j+1] ){

aux = vet[j];vet[j] = vet[j+1];vet[j+1] = aux;

}}

}

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 8 / 18

Page 19: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Bubble-Sort

void bubbleSort(int vet[], int tam){int i,j, aux;

for(i=tam-1; i>0; i--){

for(j=0; j < i; j++) //Faz trocas ate posic~ao iif( vet[j] > vet[j+1] ){

aux = vet[j];vet[j] = vet[j+1];vet[j+1] = aux;

}}

}

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 8 / 18

Page 20: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Bubble-Sort

Note que as trocas na primeira iteracao ocorrem ate a ultima posicao.

Na segunda iteracao ocorrem ate a penultima posicao.

E assim sucessivamente.

Por que?

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 9 / 18

Page 21: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Insertion-Sort

Seja vet um vetor contendo numeros inteiros, que devemos deixarordenado.

A ideia do algoritmo e a seguinte:I A cada passo, uma porcao de 0 ate i − 1 do vetor ja esta ordenada.I Devemos inserir o item da posicao i na posicao correta para deixar o

vetor ordenado ate a posicao i .I No passo seguinte consideramos que o vetor esta ordenado ate i .

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 10 / 18

Page 22: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Insertion-Sort

Exemplo: (5,3,2,1,90,6).O valor sublinhado representa onde esta o ındice i(5, 3, 2, 1, 90, 6) : vetor ordenado de 0− 0.(3, 5, 2, 1, 90, 6) : vetor ordenado de 0− 1.(2, 3, 5, 1, 90, 6) : vetor ordenado de 0− 2.(1, 2, 3, 5, 90, 6) : vetor ordenado de 0− 3.(1, 2, 3, 5, 90, 6) : vetor ordenado de 0− 4.(1, 2, 3, 5, 6, 90) : vetor ordenado de 0− 5.

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 11 / 18

Page 23: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Insertion-Sort

Exemplo: (5,3,2,1,90,6).O valor sublinhado representa onde esta o ındice i(5, 3, 2, 1, 90, 6) : vetor ordenado de 0− 0.(3, 5, 2, 1, 90, 6) : vetor ordenado de 0− 1.(2, 3, 5, 1, 90, 6) : vetor ordenado de 0− 2.(1, 2, 3, 5, 90, 6) : vetor ordenado de 0− 3.(1, 2, 3, 5, 90, 6) : vetor ordenado de 0− 4.(1, 2, 3, 5, 6, 90) : vetor ordenado de 0− 5.

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 11 / 18

Page 24: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Insertion-Sort

Exemplo: (5,3,2,1,90,6).O valor sublinhado representa onde esta o ındice i(5, 3, 2, 1, 90, 6) : vetor ordenado de 0− 0.(3, 5, 2, 1, 90, 6) : vetor ordenado de 0− 1.(2, 3, 5, 1, 90, 6) : vetor ordenado de 0− 2.(1, 2, 3, 5, 90, 6) : vetor ordenado de 0− 3.(1, 2, 3, 5, 90, 6) : vetor ordenado de 0− 4.(1, 2, 3, 5, 6, 90) : vetor ordenado de 0− 5.

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 11 / 18

Page 25: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Insertion-Sort

Exemplo: (5,3,2,1,90,6).O valor sublinhado representa onde esta o ındice i(5, 3, 2, 1, 90, 6) : vetor ordenado de 0− 0.(3, 5, 2, 1, 90, 6) : vetor ordenado de 0− 1.(2, 3, 5, 1, 90, 6) : vetor ordenado de 0− 2.(1, 2, 3, 5, 90, 6) : vetor ordenado de 0− 3.(1, 2, 3, 5, 90, 6) : vetor ordenado de 0− 4.(1, 2, 3, 5, 6, 90) : vetor ordenado de 0− 5.

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 11 / 18

Page 26: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Insertion-Sort

Exemplo: (5,3,2,1,90,6).O valor sublinhado representa onde esta o ındice i(5, 3, 2, 1, 90, 6) : vetor ordenado de 0− 0.(3, 5, 2, 1, 90, 6) : vetor ordenado de 0− 1.(2, 3, 5, 1, 90, 6) : vetor ordenado de 0− 2.(1, 2, 3, 5, 90, 6) : vetor ordenado de 0− 3.(1, 2, 3, 5, 90, 6) : vetor ordenado de 0− 4.(1, 2, 3, 5, 6, 90) : vetor ordenado de 0− 5.

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 11 / 18

Page 27: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Insertion-Sort

Exemplo: (5,3,2,1,90,6).O valor sublinhado representa onde esta o ındice i(5, 3, 2, 1, 90, 6) : vetor ordenado de 0− 0.(3, 5, 2, 1, 90, 6) : vetor ordenado de 0− 1.(2, 3, 5, 1, 90, 6) : vetor ordenado de 0− 2.(1, 2, 3, 5, 90, 6) : vetor ordenado de 0− 3.(1, 2, 3, 5, 90, 6) : vetor ordenado de 0− 4.(1, 2, 3, 5, 6, 90) : vetor ordenado de 0− 5.

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 11 / 18

Page 28: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Insertion-Sort

Exemplo: (5,3,2,1,90,6).O valor sublinhado representa onde esta o ındice i(5, 3, 2, 1, 90, 6) : vetor ordenado de 0− 0.(3, 5, 2, 1, 90, 6) : vetor ordenado de 0− 1.(2, 3, 5, 1, 90, 6) : vetor ordenado de 0− 2.(1, 2, 3, 5, 90, 6) : vetor ordenado de 0− 3.(1, 2, 3, 5, 90, 6) : vetor ordenado de 0− 4.(1, 2, 3, 5, 6, 90) : vetor ordenado de 0− 5.

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 11 / 18

Page 29: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Insertion-Sort

Vamos supor que o vetor esta ordenado de 0 ate i − 1.

Vamos inserir o elemento da posicao i no lugar correto.

aux = vet[i]; //inserir aux na posic~ao corretaj = i - 1; //analisar elementos das posic~oes j anteriores

while( ( j >=0 ) && ( vet[j] > aux) ){vet[ j+1 ] = vet[ j ]; // enquanto vet[j] > aux empurraj --; // vet[j] para frente

}

vet[ j+1 ] = aux; // (j+1) e posic~ao correta para vet[i]}

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 12 / 18

Page 30: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Insertion-Sort

Vamos supor que o vetor esta ordenado de 0 ate i − 1.

Vamos inserir o elemento da posicao i no lugar correto.

aux = vet[i]; //inserir aux na posic~ao corretaj = i - 1; //analisar elementos das posic~oes j anteriores

while( ( j >=0 ) && ( vet[j] > aux) ){vet[ j+1 ] = vet[ j ]; // enquanto vet[j] > aux empurraj --; // vet[j] para frente

}

vet[ j+1 ] = aux; // (j+1) e posic~ao correta para vet[i]}

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 12 / 18

Page 31: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Insertion-Sort

Vamos supor que o vetor esta ordenado de 0 ate i − 1.

Vamos inserir o elemento da posicao i no lugar correto.

aux = vet[i]; //inserir aux na posic~ao corretaj = i - 1; //analisar elementos das posic~oes j anteriores

while( ( j >=0 ) && ( vet[j] > aux) ){vet[ j+1 ] = vet[ j ]; // enquanto vet[j] > aux empurraj --; // vet[j] para frente

}

vet[ j+1 ] = aux; // (j+1) e posic~ao correta para vet[i]}

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 12 / 18

Page 32: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Insertion-Sort

Vamos supor que o vetor esta ordenado de 0 ate i − 1.

Vamos inserir o elemento da posicao i no lugar correto.

aux = vet[i]; //inserir aux na posic~ao corretaj = i - 1; //analisar elementos das posic~oes j anteriores

while( ( j >=0 ) && ( vet[j] > aux) ){vet[ j+1 ] = vet[ j ]; // enquanto vet[j] > aux empurraj --; // vet[j] para frente

}

vet[ j+1 ] = aux; // (j+1) e posic~ao correta para vet[i]}

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 12 / 18

Page 33: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Exemplo (1, 3, 5, 10, 20, 2∗, 4) com i = 5.(1, 3, 5, 10, 20, 2, 4) : aux = 2; j = 4;(1, 3, 5, 10, 20, 20, 4) : aux = 2; j = 3;(1, 3, 5, 10, 10, 20, 4) : aux = 2; j = 2;(1, 3, 5, 5, 10, 20, 4) : aux = 2; j = 1;(1, 3, 3, 5, 10, 20, 4) : aux = 2; j = 0;Aqui temos que vet[j ] < aux logo fazemos vet[j + 1] = aux(1, 2, 3, 5, 10, 20, 4) : aux = 2; j = 0;

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 13 / 18

Page 34: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Exemplo (1, 3, 5, 10, 20, 2∗, 4) com i = 5.(1, 3, 5, 10, 20, 2, 4) : aux = 2; j = 4;(1, 3, 5, 10, 20, 20, 4) : aux = 2; j = 3;(1, 3, 5, 10, 10, 20, 4) : aux = 2; j = 2;(1, 3, 5, 5, 10, 20, 4) : aux = 2; j = 1;(1, 3, 3, 5, 10, 20, 4) : aux = 2; j = 0;Aqui temos que vet[j ] < aux logo fazemos vet[j + 1] = aux(1, 2, 3, 5, 10, 20, 4) : aux = 2; j = 0;

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 13 / 18

Page 35: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Exemplo (1, 3, 5, 10, 20, 2∗, 4) com i = 5.(1, 3, 5, 10, 20, 2, 4) : aux = 2; j = 4;(1, 3, 5, 10, 20, 20, 4) : aux = 2; j = 3;(1, 3, 5, 10, 10, 20, 4) : aux = 2; j = 2;(1, 3, 5, 5, 10, 20, 4) : aux = 2; j = 1;(1, 3, 3, 5, 10, 20, 4) : aux = 2; j = 0;Aqui temos que vet[j ] < aux logo fazemos vet[j + 1] = aux(1, 2, 3, 5, 10, 20, 4) : aux = 2; j = 0;

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 13 / 18

Page 36: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Exemplo (1, 3, 5, 10, 20, 2∗, 4) com i = 5.(1, 3, 5, 10, 20, 2, 4) : aux = 2; j = 4;(1, 3, 5, 10, 20, 20, 4) : aux = 2; j = 3;(1, 3, 5, 10, 10, 20, 4) : aux = 2; j = 2;(1, 3, 5, 5, 10, 20, 4) : aux = 2; j = 1;(1, 3, 3, 5, 10, 20, 4) : aux = 2; j = 0;Aqui temos que vet[j ] < aux logo fazemos vet[j + 1] = aux(1, 2, 3, 5, 10, 20, 4) : aux = 2; j = 0;

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 13 / 18

Page 37: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Exemplo (1, 3, 5, 10, 20, 2∗, 4) com i = 5.(1, 3, 5, 10, 20, 2, 4) : aux = 2; j = 4;(1, 3, 5, 10, 20, 20, 4) : aux = 2; j = 3;(1, 3, 5, 10, 10, 20, 4) : aux = 2; j = 2;(1, 3, 5, 5, 10, 20, 4) : aux = 2; j = 1;(1, 3, 3, 5, 10, 20, 4) : aux = 2; j = 0;Aqui temos que vet[j ] < aux logo fazemos vet[j + 1] = aux(1, 2, 3, 5, 10, 20, 4) : aux = 2; j = 0;

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 13 / 18

Page 38: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Exemplo (1, 3, 5, 10, 20, 2∗, 4) com i = 5.(1, 3, 5, 10, 20, 2, 4) : aux = 2; j = 4;(1, 3, 5, 10, 20, 20, 4) : aux = 2; j = 3;(1, 3, 5, 10, 10, 20, 4) : aux = 2; j = 2;(1, 3, 5, 5, 10, 20, 4) : aux = 2; j = 1;(1, 3, 3, 5, 10, 20, 4) : aux = 2; j = 0;Aqui temos que vet[j ] < aux logo fazemos vet[j + 1] = aux(1, 2, 3, 5, 10, 20, 4) : aux = 2; j = 0;

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 13 / 18

Page 39: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Exemplo (1, 3, 5, 10, 20, 2∗, 4) com i = 5.(1, 3, 5, 10, 20, 2, 4) : aux = 2; j = 4;(1, 3, 5, 10, 20, 20, 4) : aux = 2; j = 3;(1, 3, 5, 10, 10, 20, 4) : aux = 2; j = 2;(1, 3, 5, 5, 10, 20, 4) : aux = 2; j = 1;(1, 3, 3, 5, 10, 20, 4) : aux = 2; j = 0;Aqui temos que vet[j ] < aux logo fazemos vet[j + 1] = aux(1, 2, 3, 5, 10, 20, 4) : aux = 2; j = 0;

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 13 / 18

Page 40: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

void insertionSort(int vet[], int tam){int i,j, aux;

for(i=1; i<tam; i++){

aux = vet[i];j=i-1;

while( (j>=0) && (vet[j] > aux) ){vet[j+1] = vet[j];j--;

}vet[j+1] = aux;

}}

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 14 / 18

Page 41: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

void insertionSort(int vet[], int tam){int i,j, aux;

for(i=1; i<tam; i++){

aux = vet[i];j=i-1;

while( (j>=0) && (vet[j] > aux) ){vet[j+1] = vet[j];j--;

}vet[j+1] = aux;

}}

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 14 / 18

Page 42: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

void insertionSort(int vet[], int tam){int i,j, aux;

for(i=1; i<tam; i++){

aux = vet[i];j=i-1;

while( (j>=0) && (vet[j] > aux) ){vet[j+1] = vet[j];j--;

}vet[j+1] = aux;

}}

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 14 / 18

Page 43: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

void insertionSort(int vet[], int tam){int i,j, aux;

for(i=1; i<tam; i++){

aux = vet[i];j=i-1;

while( (j>=0) && (vet[j] > aux) ){vet[j+1] = vet[j];j--;

}vet[j+1] = aux;

}}

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 14 / 18

Page 44: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Comparacao dos metodos estudados

0

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

0 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000

Tem

po g

asto

par

a or

dena

r (s

egun

dos)

Numero de elementos no vetor

BubbleSortSelectionSortInsertionSort

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 15 / 18

Page 45: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Comparacao dos metodos estudados

0

20

40

60

80

100

120

140

160

0 10000 20000 30000 40000 50000 60000 70000 80000 90000 100000

Tem

po g

asto

par

a or

dena

r (s

egun

dos)

Numero de elementos no vetor

BubbleSortSelectionSortInsertionSort

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 16 / 18

Page 46: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Pegando o tempo de execucao de um programa...

http://en.cppreference.com/w/c/chrono/clock

No seu programa colocar:

#include <time.h>int main(){

clock_t start = clock(); //<- antes de qualquer comando

double time = 0;todo seu codigo

//antes do returntime = ((double)clock() - start) / CLOCKS_PER_SEC)return(0)

}

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 17 / 18

Page 47: Ordenação -- BubbleSort e InsertionSortgeraldoms/mc102/slides/mc102-aula15.pdf · Bubble-Sort Ap os uma itera˘c~ao de trocas, o maior elemento estar a na ultima posi˘c~ao. Ap

Mais sobre ordenacao...

http://pt.wikipedia.org/wiki/Algoritmo_de_ordenac~ao

(Instituto de Computacao – Unicamp) MC-102 — Aula 20 10 de Maio de 2012 18 / 18