190 likes | 278 Views
Faculdade. Pesquisa Binária. 4º B Sistemas da Informação Estrutura de Dados II Professor Regis Jaruzo Alunos: Adriele Medeiros Diego Martins de Oliveira Flávia Gonçalves Sabrina Magalhães Welinton Velasco. - 2010 -. Conceito
E N D
Faculdade Pesquisa Binária 4º B Sistemas da Informação Estrutura de Dados II Professor Regis Jaruzo Alunos: Adriele Medeiros Diego Martins de Oliveira Flávia Gonçalves Sabrina Magalhães Welinton Velasco - 2010 -
Conceito Método de pesquisa que consiste basicamente em dividir o campo de busca para reduzir tempo da pesquisa.
Funcionamento • Pré-requisito: a coleção que sofrerá a pesquisa deve ser ou estar ordenada antes do inicio da pesquisa. • Parametros: vetor ordenado (coleção), tamanho do vetor, valor a ser procurado.
Na passagem dos parâmetros para a função: vet = Vetor //-----------------------------------------variáveis da função chamadora x = Valor do elemento procurado t = Tamanho do vetor ret = recebe o retorno da função inteiro funcao pesquisaBinaria [ inteiro vet [ ], inteiro x, inteiro t ] //-----------------------------assinatura pivo = Elemento mediano do vetor //----------------------------------------variáveis da função de pesquisa i = Inicio do vetor f = Fim do vetor ... ... ... ret = pesquisaBinaria [ vet [ ], 60, 8 ] //-----------------chamada para a função de pesquisa Tabela de valores 0 1 2 3 4 5 6 7 10 20 30 40 50 60 70 80 vet x t i f pivo vet 60 8 vet ret
ret vet inteiro funcaopesquisaBinaria [ inteiro vet [ ], inteiro x, inteiro t ] { | | inteiro pivo, i, f; | f = ( t -1); | i = 0; | enquanto [ i < = f ] faca { | |pivo = ( i + f ) / 2; | | se [ vet [ pivo ] == x ] { | || retorne pivo; | | } | |senao se [ x > vet [ pivo ] ] { | || i = pivo + 1; | | } | |senao | | f = pivo – 1; | } | retorne -1; } 0 1 2 3 4 5 6 7 10 20 30 40 50 60 70 80 i f x x t t i i f f pivo pivo vet vet 60 60 8 8 0 7 vet vet Área da pesquisa ret
ret vet inteiro funcaopesquisaBinaria [ inteiro vet [ ], inteiro x, inteiro t ] { | | inteiro pivo, i, f; | f = ( t -1); | i = 0; | enquanto [ i < = f ] faca { | |pivo = ( i + f ) / 2; | | se [ vet [ pivo ] == x ] { | || retorne pivo; | | } | |senao se [ x > vet [ pivo ] ] { | || i = pivo + 1; | | } | |senao | | f = pivo – 1; | } | retorne -1; } 0 1 2 3 4 5 6 7 10 20 30 40 50 60 70 80 f i 0 < = 7 Verdade Continua... x x t t i i f f pivo pivo vet vet 60 60 8 8 0 0 7 7 vet vet Área da pesquisa ret
ret vet inteiro funcaopesquisaBinaria [ inteiro vet [ ], inteiro x, inteiro t ] { | | inteiro pivo, i, f; | f = ( t -1); | i = 0; | enquanto [ i < = f ] faca { | |pivo = ( i + f ) / 2; | | se [ vet [ pivo ] == x ] { | || retorne pivo; | | } | |senao se [ x > vet [ pivo ] ] { | || i = pivo + 1; | | } | |senao | | f = pivo – 1; | } | retorne -1; } 0 1 2 3 4 5 6 7 10 20 30 40 50 60 70 80 pivo i f pivo = ( 0 + 7 ) / 2 pivo = 3 , 5 pivo = 3 x x t t i i f f pivo pivo vet vet 60 60 8 8 0 0 7 7 3 vet vet Área da pesquisa ret
ret vet inteiro funcaopesquisaBinaria [ inteiro vet [ ], inteiro x, inteiro t ] { | | inteiro pivo, i, f; | f = ( t -1); | i = 0; | enquanto [ i < = f ] faca { | |pivo = ( i + f ) / 2; | | se [ vet [ pivo ] == x ] { | || retorne pivo; | | } | |senao se [ x > vet [ pivo ] ] { | || i = pivo + 1; | | } | |senao | | f = pivo – 1; | } | retorne -1; } 0 1 2 3 4 5 6 7 10 20 30 40 50 60 70 80 pivo f i vet [pivo] == x vet [3] == 60 40 ==60 Falso Não entra.. x x t t i i f f pivo pivo vet vet 60 60 8 8 0 0 7 7 3 3 vet vet Área da pesquisa ret
vet inteiro funcaopesquisaBinaria [ inteiro vet [ ], inteiro x, inteiro t ] { | | inteiro pivo, i, f; | f = ( t -1); | i = 0; | enquanto [ i < = f ] faca { | |pivo = ( i + f ) / 2; | | se [ vet [ pivo ] == x ] { | || retorne pivo; | | } | |senao se [ x > vet [ pivo ] ] { | || i = pivo + 1; | | } | |senao | | f = pivo – 1; | } | retorne -1; } 0 1 2 3 4 5 6 7 10 20 30 40 50 60 70 80 pivo i f vet [pivo] == x vet [3] == 60 40 ==3 Falso Não entra.. x x t t i i f f pivo pivo vet vet 60 60 8 8 0 0 7 7 3 3 vet vet Área da pesquisa
vet inteiro funcaopesquisaBinaria [ inteiro vet [ ], inteiro x, inteiro t ] { | | inteiro pivo, i, f; | f = ( t -1); | i = 0; | enquanto [ i < = f ] faca { | |pivo = ( i + f ) / 2; | | se [ vet [ pivo ] == x ] { | || retorne pivo; | | } | |senao se [ x > vet [ pivo ] ] { | || i = pivo + 1; | | } | |senao | | f = pivo – 1; | } | retorne -1; } 0 1 2 3 4 5 6 7 10 20 30 40 50 60 70 80 pivo i f x > vet [pivo] 60 > vet [3] 60> 40 Verdade Entra.. x x t t i i f f pivo pivo vet vet 60 60 8 8 0 0 7 7 3 3 vet vet Área da pesquisa
vet inteiro funcaopesquisaBinaria [ inteiro vet [ ], inteiro x, inteiro t ] { | | inteiro pivo, i, f; | f = ( t -1); | i = 0; | enquanto [ i < = f ] faca { | |pivo = ( i + f ) / 2; | | se [ vet [ pivo ] == x ] { | || retorne pivo; | | } | |senao se [ x > vet [ pivo ] ] { | || i = pivo + 1; | | } | |senao | | f = pivo – 1; | } | retorne -1; } 0 1 2 3 4 5 6 7 10 20 30 40 50 60 70 80 pivo i f i= pivo + 1 i = 3 + 1 i = 4 x x t t i i f f pivo pivo vet vet 60 60 8 8 0 4 7 7 3 3 vet vet Área da pesquisa
vet inteiro funcaopesquisaBinaria [ inteiro vet [ ], inteiro x, inteiro t ] { | | inteiro pivo, i, f; | f = ( t -1); | i = 0; | enquanto [ i < = f ] faca { | |pivo = ( i + f ) / 2; | | se [ vet [ pivo ] == x ] { | || retorne pivo; | | } | |senao se [ x > vet [ pivo ] ] { | || i = pivo + 1; | | } | |senao | | f = pivo – 1; | } | retorne -1; } 0 1 2 3 4 5 6 7 10 20 30 40 50 60 70 80 pivo i f Pula x x t t i i f f pivo pivo vet vet 60 60 8 8 4 4 7 7 3 3 vet vet Área da pesquisa
vet inteiro funcaopesquisaBinaria [ inteiro vet [ ], inteiro x, inteiro t ] { | | inteiro pivo, i, f; | f = ( t -1); | i = 0; | enquanto [ i < = f ] faca { | |pivo = ( i + f ) / 2; | | se [ vet [ pivo ] == x ] { | || retorne pivo; | | } | |senao se [ x > vet [ pivo ] ] { | || i = pivo + 1; | | } | |senao | | f = pivo – 1; | } | retorne -1; } 0 1 2 3 4 5 6 7 10 20 30 40 50 60 70 80 pivo i f Pula x x t t i i f f pivo pivo vet vet 60 60 8 8 4 4 7 7 3 3 vet vet Área da pesquisa
vet inteiro funcaopesquisaBinaria [ inteiro vet [ ], inteiro x, inteiro t ] { | | inteiro pivo, i, f; | f = ( t -1); | i = 0; | enquanto [ i < = f ] faca { | |pivo = ( i + f ) / 2; | | se [ vet [ pivo ] == x ] { | || retorne pivo; | | } | |senao se [ x > vet [ pivo ] ] { | || i = pivo + 1; | | } | |senao | | f = pivo – 1; | } | retorne -1; } 0 1 2 3 4 5 6 7 10 20 30 40 50 60 70 80 pivo i f Volta x x t t i i f f pivo pivo vet vet 60 60 8 8 4 4 7 7 3 3 vet vet Área da pesquisa
ret vet inteiro funcaopesquisaBinaria [ inteiro vet [ ], inteiro x, inteiro t ] { | | inteiro pivo, i, f; | f = ( t -1); | i = 0; | enquanto [ i < = f ] faca { | |pivo = ( i + f ) / 2; | | se [ vet [ pivo ] == x ] { | || retorne pivo; | | } | |senao se [ x > vet [ pivo ] ] { | || i = pivo + 1; | | } | |senao | | f = pivo – 1; | } | retorne -1; } 0 1 2 3 4 5 6 7 10 20 30 40 50 60 70 80 pivo f i 4 < = 7 Verdade Continua... x x t t i i f f pivo pivo vet vet 60 60 8 8 4 4 7 7 3 3 vet vet Área da pesquisa ret
ret vet inteiro funcaopesquisaBinaria [ inteiro vet [ ], inteiro x, inteiro t ] { | | inteiro pivo, i, f; | f = ( t -1); | i = 0; | enquanto [ i < = f ] faca { | |pivo = ( i + f ) / 2; | | se [ vet [ pivo ] == x ] { | || retorne pivo; | | } | |senao se [ x > vet [ pivo ] ] { | || i = pivo + 1; | | } | |senao | | f = pivo – 1; | } | retorne -1; } 0 1 2 3 4 5 6 7 10 20 30 40 50 60 70 80 pivo f i pivo = ( 4 + 7 ) / 2 pivo = 5 , 5 pivo = 5 x x t t i i f f pivo pivo vet vet 60 60 8 8 4 4 7 7 3 5 vet vet Área da pesquisa ret
ret vet inteiro funcaopesquisaBinaria [ inteiro vet [ ], inteiro x, inteiro t ] { | | inteiro pivo, i, f; | f = ( t -1); | i = 0; | enquanto [ i < = f ] faca { | |pivo = ( i + f ) / 2; | | se [ vet [ pivo ] == x ] { | || retorne pivo; | | } | |senao se [ x > vet [ pivo ] ] { | || i = pivo + 1; | | } | |senao | | f = pivo – 1; | } | retorne -1; } 0 1 2 3 4 5 6 7 10 20 30 40 50 60 70 80 pivo f i vet [pivo] == x vet [5] == 60 60 ==60 Verdade Entra.. x x t t i i f f pivo pivo vet vet 60 60 8 8 4 4 7 7 5 5 vet vet Área da pesquisa ret
ret vet inteiro funcaopesquisaBinaria [ inteiro vet [ ], inteiro x, inteiro t ] { | | inteiro pivo, i, f; | f = ( t -1); | i = 0; | enquanto [ i < = f ] faca { | |pivo = ( i + f ) / 2; | | se [ vet [ pivo ] == x ] { | || retorne pivo; | | } | |senao se [ x > vet [ pivo ] ] { | || i = pivo + 1; | | } | |senao | | f = pivo – 1; | } | retorne -1; } 0 1 2 3 4 5 6 7 10 20 30 40 50 60 70 80 pivo f i retorne pivo retorne 5 Fim da função x x t t i i f f pivo pivo vet vet 60 60 8 8 4 4 7 7 5 5 vet vet Área da pesquisa ret
ret ... ret = pesquisaBinaria [ vet [ ], 60, 8 ] ... ... ... ret = retorno da função ret = 5 x x t t i i f f pivo pivo vet vet Depois de apenas duas comparações com valores do vetor, encontramos o elemento que se encontrava na 5º posição. 60 60 8 8 4 4 7 7 5 5 vet vet ret 5