O documento discute duas alternativas para buscar um funcionário em um arquivo binário ordenado de funcionários: (1) busca sequencial, que lê o arquivo inteiro no pior caso, e (2) busca binária, que divide o arquivo ao meio em cada passo para encontrar o registro mais rápido. A busca binária é mais eficiente, com complexidade O(log n), em comparação com a busca sequencial de complexidade O(n).
129549705 estatistica-facil-antonio-arnot-crespo-19º-edGii Paulo
Este documento é um livro sobre estatística introdutória. O livro apresenta os principais tópicos da estatística descritiva como distribuição de frequência, medidas de posição, gráficos estatísticos e probabilidades. Inclui também capítulos sobre amostras, séries estatísticas, índices e taxas. O objetivo é ensinar esses conceitos de forma acessível para estudantes de cursos técnicos e superiores.
Este documento fornece instruções para criar uma lista de dados sobre alunos no Excel, incluindo nome, aniversário, telefone, e-mail e idade. Instrui o usuário a inserir os dados através de um formulário, ordenar e filtrar a lista de diferentes maneiras.
O documento discute os três principais tipos de pesquisa de marketing: exploratória, descritiva e causal. A pesquisa exploratória tem como objetivo explorar um problema vagamente definido para orientar pesquisas mais detalhadas, a pesquisa descritiva descreve características de objetos ou fenômenos, e a pesquisa causal busca identificar relações de causa e efeito entre variáveis por meio de experimentos.
O documento discute os tipos de pesquisa científica, incluindo pesquisa básica versus aplicada, pesquisa exploratória, descritiva e explicativa, e pesquisa experimental, operacional e de estudo de caso. Também aborda fontes de informação para pesquisa, como pesquisa de campo e de laboratório, e estudos longitudinais versus transversais.
This document outlines the key concepts and steps of scientific research. It defines scientific research, lists the requirements and objectives of research, and classifies research by type and subject matter. It also details the planning, execution, writing, and publication stages of research and emphasizes the importance of thoroughness to research success.
O documento discute estratégias de pesquisa bibliográfica, incluindo tipos de pesquisa, fontes de informação e estratégias de busca. Aborda pesquisa qualitativa versus quantitativa, revisão bibliográfica versus pesquisa bibliográfica, e fatores a serem considerados ao selecionar fontes de informação para pesquisa.
Esta resolução estabelece as diretrizes e procedimentos para a realização do Trabalho de Conclusão de Curso (TCC) nos cursos de graduação da Universidade do Estado de Mato Grosso (UNEMAT), definindo as etapas, responsabilidades dos professores orientadores e alunos, critérios de avaliação e outras regulamentações.
O documento discute conceitos básicos de sistemas computacionais, definindo computador como uma máquina capaz de executar tarefas segundo instruções para solucionar problemas, e destacando que um sistema de computação compreende hardware (parte física) e software (parte lógica), que trabalham em conjunto para permitir o processamento de dados. Também define peopleware como as pessoas que trabalham com tecnologia da informação.
129549705 estatistica-facil-antonio-arnot-crespo-19º-edGii Paulo
Este documento é um livro sobre estatística introdutória. O livro apresenta os principais tópicos da estatística descritiva como distribuição de frequência, medidas de posição, gráficos estatísticos e probabilidades. Inclui também capítulos sobre amostras, séries estatísticas, índices e taxas. O objetivo é ensinar esses conceitos de forma acessível para estudantes de cursos técnicos e superiores.
Este documento fornece instruções para criar uma lista de dados sobre alunos no Excel, incluindo nome, aniversário, telefone, e-mail e idade. Instrui o usuário a inserir os dados através de um formulário, ordenar e filtrar a lista de diferentes maneiras.
O documento discute os três principais tipos de pesquisa de marketing: exploratória, descritiva e causal. A pesquisa exploratória tem como objetivo explorar um problema vagamente definido para orientar pesquisas mais detalhadas, a pesquisa descritiva descreve características de objetos ou fenômenos, e a pesquisa causal busca identificar relações de causa e efeito entre variáveis por meio de experimentos.
O documento discute os tipos de pesquisa científica, incluindo pesquisa básica versus aplicada, pesquisa exploratória, descritiva e explicativa, e pesquisa experimental, operacional e de estudo de caso. Também aborda fontes de informação para pesquisa, como pesquisa de campo e de laboratório, e estudos longitudinais versus transversais.
This document outlines the key concepts and steps of scientific research. It defines scientific research, lists the requirements and objectives of research, and classifies research by type and subject matter. It also details the planning, execution, writing, and publication stages of research and emphasizes the importance of thoroughness to research success.
O documento discute estratégias de pesquisa bibliográfica, incluindo tipos de pesquisa, fontes de informação e estratégias de busca. Aborda pesquisa qualitativa versus quantitativa, revisão bibliográfica versus pesquisa bibliográfica, e fatores a serem considerados ao selecionar fontes de informação para pesquisa.
Esta resolução estabelece as diretrizes e procedimentos para a realização do Trabalho de Conclusão de Curso (TCC) nos cursos de graduação da Universidade do Estado de Mato Grosso (UNEMAT), definindo as etapas, responsabilidades dos professores orientadores e alunos, critérios de avaliação e outras regulamentações.
O documento discute conceitos básicos de sistemas computacionais, definindo computador como uma máquina capaz de executar tarefas segundo instruções para solucionar problemas, e destacando que um sistema de computação compreende hardware (parte física) e software (parte lógica), que trabalham em conjunto para permitir o processamento de dados. Também define peopleware como as pessoas que trabalham com tecnologia da informação.
O documento resume conceitos básicos de informática, definindo-a como o tratamento automático da informação utilizando computadores. Explica que computadores são máquinas para processar dados e gerar informações, e que o processamento de dados envolve a coleta de dados, seu tratamento e a geração de informações.
Este documento resume um trabalho de conclusão de curso sobre a avaliação de ferramentas de realidade virtual e aumentada como suporte ao manual do proprietário. O trabalho analisou diferentes aplicativos para visualização de modelos 3D em realidade virtual e aumentada, classificando-os quanto ao tipo de imersão, possibilidades de interação e capacidade de medir. O modelo BIM de um projeto foi publicado nesses aplicativos e testado em um celular. Concluiu-se que essas ferramentas podem auxiliar na interpretação do manual do proprietário
Este documento discute a simulação de infraestruturas computacionais para computação ubíqua, apresentando conceitos de computação ubíqua e grids computacionais. Também resume ferramentas de simulação como Bricks, GangSim, OptorSim e GridSim, descrevendo suas funcionalidades. Por fim, apresenta um estudo de caso utilizando a ferramenta de simulação SimGrid.
Este documento apresenta uma tese de doutorado sobre abstrações para linguagens de programação visando aplicações móveis em ambientes pervasivos. A tese propõe o ISAMadapt, uma linguagem e ferramenta para projetar aplicações adaptativas para dispositivos móveis em ambientes pervasivos considerando o contexto do usuário e do ambiente.
O documento discute a Internet das Coisas (IoT), definindo-a como uma extensão da Internet que conecta objetos do dia-a-dia com capacidade de processamento e comunicação. A IoT possibilita novas aplicações para a academia e indústria, mas também apresenta desafios técnicos e sociais. O texto descreve o estado da arte de IoT, abordando questões teóricas e práticas.
1) O documento discute os conceitos de computação ubíqua, móvel e pervasiva, como essas tecnologias estão presentes no dia-a-dia das pessoas e como as interfaces devem ser projetadas para esses sistemas.
2) É explicado que a computação ubíqua tem como objetivo tornar a interação com computadores mais natural, integrando a tecnologia às ações cotidianas das pessoas de forma imperceptível.
3) Características como affordance, interfaces multimodais e reconhecimento de contexto são importantes para o desenvolvimento
O documento discute a computação ubíqua, na qual computadores se tornam onipresentes em objetos do dia a dia de forma invisível ao usuário. Apresenta dois cenários que ilustram como dispositivos inteligentes e móveis podem coordenar-se para fornecer acesso imediato a serviços e aumentar as capacidades humanas de forma transparente. Também discute desafios como mobilidade, contexto e uso eficiente de recursos em redes sem fio.
O documento descreve o desenvolvimento do ACUMAAF, um ambiente de computação ubíqua para monitoramento e avaliação de atividade física de participantes de grupos. O ACUMAAF coleta dados fisiológicos em tempo real por meio de sensores sem fio e disponibiliza indicadores para apoiar políticas de promoção da atividade física.
Este documento descreve uma dissertação de mestrado sobre uma proposta de arquitetura de middleware chamada UbiquitOS para facilitar a adaptabilidade de serviços em sistemas de computação ubíqua. A dissertação apresenta o contexto da computação ubíqua e revisa projetos anteriores, abordando especificamente a adaptabilidade de serviços. Em seguida, discute como a adaptabilidade de serviços pode reduzir o desperdício de recursos e propõe o UbiquitOS como uma solução, descrevendo seu modelo de
O documento discute a computação ubíqua, definindo-a como um novo paradigma de computação caracterizado pela proatividade, onipresença, imperceptibilidade e naturalidade. Ele apresenta conceitos básicos da computação ubíqua, suas características, tecnologias essenciais, áreas de aplicação e exemplos de sistemas desenvolvidos, incluindo na educação, saúde, negócios e residências.
O documento descreve um sistema de monitoramento de temperatura corporal humana em tempo real utilizando software embarcado e computação ubíqua, com o objetivo de auxiliar a equipe médica. O sistema foi desenvolvido com base em pesquisa bibliográfica sobre computação ubíqua, pervasiva, física e sistemas em tempo real. O protótipo utiliza uma placa Arduino Uno conectada a sensores de temperatura para coletar e transmitir dados dos pacientes.
1. O documento discute algoritmos de pesquisa e ordenação em sistemas de informação.
2. São apresentados oito algoritmos de ordenação: inserção direta, seleção direta, bubblesort, mergesort, heapsort, quicksort, shellsort e radixsort.
3. Cada algoritmo é explicado com exemplos passo a passo utilizando vetores e figuras ilustrativas.
Este estudo comparou o desempenho de algoritmos de ordenação como Bubble Sort, Insertion Sort, Selection Sort, Merge Sort e Quick Sort em vetores de diferentes tamanhos e ordenações. Os resultados mostraram que Merge Sort e Quick Sort tiveram os melhores tempos de execução, enquanto Bubble Sort teve os piores tempos.
Este documento apresenta o plano de aula para a disciplina Introdução à Ciência da Computação II. Serão estudados algoritmos de busca, ordenação e estruturas de dados, com foco na análise da complexidade de tempo e memória. Os alunos implementarão e testarão algoritmos em laboratório e produzirão relatórios. A avaliação inclui atividades e trabalhos ao longo do semestre.
O documento apresenta conceitos básicos de análise de algoritmos, incluindo: (1) definição de algoritmo e os aspectos de correção e análise, (2) tipos de análise (empírica e matemática), (3) exemplos de algoritmos com diferentes complexidades (constante, linear, quadrática).
O documento discute vários algoritmos de ordenação, incluindo ordenação por inserção, ordenação por seleção e ordenação por bolhas. Descreve as ideias por trás de cada algoritmo e fornece códigos em C como exemplos. Também discute a complexidade temporal de cada algoritmo e quando cada um é mais apropriado para uso.
O documento apresenta conceitos básicos de análise de algoritmos, incluindo correção, eficiência e complexidade. Discute análise empírica e matemática de algoritmos, apresentando exemplos de algoritmos com complexidade constante, linear e quadrática.
O documento apresenta três algoritmos de ordenação: bubble sort, insertion sort e merge sort. Descreve como cada um funciona, com exemplos de como ordenam vetores. Realça que bubble sort e insertion sort são mais simples, enquanto merge sort é mais eficiente para grandes conjuntos de dados.
O documento discute listas encadeadas em C, incluindo: 1) Como implementar listas encadeadas usando nós com ponteiros para o próximo elemento; 2) Como criar uma nova lista encadeada com um nó cabeça; 3) Como inserir elementos no início da lista encadeada movendo ponteiros.
O documento descreve as listas simplesmente encadeadas em C, incluindo:
1) A estrutura básica de um nó e lista;
2) Funções para inserir no início e fim da lista;
3) Função para imprimir a lista;
4) Função para remover elementos da lista.
O documento resume conceitos básicos de informática, definindo-a como o tratamento automático da informação utilizando computadores. Explica que computadores são máquinas para processar dados e gerar informações, e que o processamento de dados envolve a coleta de dados, seu tratamento e a geração de informações.
Este documento resume um trabalho de conclusão de curso sobre a avaliação de ferramentas de realidade virtual e aumentada como suporte ao manual do proprietário. O trabalho analisou diferentes aplicativos para visualização de modelos 3D em realidade virtual e aumentada, classificando-os quanto ao tipo de imersão, possibilidades de interação e capacidade de medir. O modelo BIM de um projeto foi publicado nesses aplicativos e testado em um celular. Concluiu-se que essas ferramentas podem auxiliar na interpretação do manual do proprietário
Este documento discute a simulação de infraestruturas computacionais para computação ubíqua, apresentando conceitos de computação ubíqua e grids computacionais. Também resume ferramentas de simulação como Bricks, GangSim, OptorSim e GridSim, descrevendo suas funcionalidades. Por fim, apresenta um estudo de caso utilizando a ferramenta de simulação SimGrid.
Este documento apresenta uma tese de doutorado sobre abstrações para linguagens de programação visando aplicações móveis em ambientes pervasivos. A tese propõe o ISAMadapt, uma linguagem e ferramenta para projetar aplicações adaptativas para dispositivos móveis em ambientes pervasivos considerando o contexto do usuário e do ambiente.
O documento discute a Internet das Coisas (IoT), definindo-a como uma extensão da Internet que conecta objetos do dia-a-dia com capacidade de processamento e comunicação. A IoT possibilita novas aplicações para a academia e indústria, mas também apresenta desafios técnicos e sociais. O texto descreve o estado da arte de IoT, abordando questões teóricas e práticas.
1) O documento discute os conceitos de computação ubíqua, móvel e pervasiva, como essas tecnologias estão presentes no dia-a-dia das pessoas e como as interfaces devem ser projetadas para esses sistemas.
2) É explicado que a computação ubíqua tem como objetivo tornar a interação com computadores mais natural, integrando a tecnologia às ações cotidianas das pessoas de forma imperceptível.
3) Características como affordance, interfaces multimodais e reconhecimento de contexto são importantes para o desenvolvimento
O documento discute a computação ubíqua, na qual computadores se tornam onipresentes em objetos do dia a dia de forma invisível ao usuário. Apresenta dois cenários que ilustram como dispositivos inteligentes e móveis podem coordenar-se para fornecer acesso imediato a serviços e aumentar as capacidades humanas de forma transparente. Também discute desafios como mobilidade, contexto e uso eficiente de recursos em redes sem fio.
O documento descreve o desenvolvimento do ACUMAAF, um ambiente de computação ubíqua para monitoramento e avaliação de atividade física de participantes de grupos. O ACUMAAF coleta dados fisiológicos em tempo real por meio de sensores sem fio e disponibiliza indicadores para apoiar políticas de promoção da atividade física.
Este documento descreve uma dissertação de mestrado sobre uma proposta de arquitetura de middleware chamada UbiquitOS para facilitar a adaptabilidade de serviços em sistemas de computação ubíqua. A dissertação apresenta o contexto da computação ubíqua e revisa projetos anteriores, abordando especificamente a adaptabilidade de serviços. Em seguida, discute como a adaptabilidade de serviços pode reduzir o desperdício de recursos e propõe o UbiquitOS como uma solução, descrevendo seu modelo de
O documento discute a computação ubíqua, definindo-a como um novo paradigma de computação caracterizado pela proatividade, onipresença, imperceptibilidade e naturalidade. Ele apresenta conceitos básicos da computação ubíqua, suas características, tecnologias essenciais, áreas de aplicação e exemplos de sistemas desenvolvidos, incluindo na educação, saúde, negócios e residências.
O documento descreve um sistema de monitoramento de temperatura corporal humana em tempo real utilizando software embarcado e computação ubíqua, com o objetivo de auxiliar a equipe médica. O sistema foi desenvolvido com base em pesquisa bibliográfica sobre computação ubíqua, pervasiva, física e sistemas em tempo real. O protótipo utiliza uma placa Arduino Uno conectada a sensores de temperatura para coletar e transmitir dados dos pacientes.
1. O documento discute algoritmos de pesquisa e ordenação em sistemas de informação.
2. São apresentados oito algoritmos de ordenação: inserção direta, seleção direta, bubblesort, mergesort, heapsort, quicksort, shellsort e radixsort.
3. Cada algoritmo é explicado com exemplos passo a passo utilizando vetores e figuras ilustrativas.
Este estudo comparou o desempenho de algoritmos de ordenação como Bubble Sort, Insertion Sort, Selection Sort, Merge Sort e Quick Sort em vetores de diferentes tamanhos e ordenações. Os resultados mostraram que Merge Sort e Quick Sort tiveram os melhores tempos de execução, enquanto Bubble Sort teve os piores tempos.
Este documento apresenta o plano de aula para a disciplina Introdução à Ciência da Computação II. Serão estudados algoritmos de busca, ordenação e estruturas de dados, com foco na análise da complexidade de tempo e memória. Os alunos implementarão e testarão algoritmos em laboratório e produzirão relatórios. A avaliação inclui atividades e trabalhos ao longo do semestre.
O documento apresenta conceitos básicos de análise de algoritmos, incluindo: (1) definição de algoritmo e os aspectos de correção e análise, (2) tipos de análise (empírica e matemática), (3) exemplos de algoritmos com diferentes complexidades (constante, linear, quadrática).
O documento discute vários algoritmos de ordenação, incluindo ordenação por inserção, ordenação por seleção e ordenação por bolhas. Descreve as ideias por trás de cada algoritmo e fornece códigos em C como exemplos. Também discute a complexidade temporal de cada algoritmo e quando cada um é mais apropriado para uso.
O documento apresenta conceitos básicos de análise de algoritmos, incluindo correção, eficiência e complexidade. Discute análise empírica e matemática de algoritmos, apresentando exemplos de algoritmos com complexidade constante, linear e quadrática.
O documento apresenta três algoritmos de ordenação: bubble sort, insertion sort e merge sort. Descreve como cada um funciona, com exemplos de como ordenam vetores. Realça que bubble sort e insertion sort são mais simples, enquanto merge sort é mais eficiente para grandes conjuntos de dados.
O documento discute listas encadeadas em C, incluindo: 1) Como implementar listas encadeadas usando nós com ponteiros para o próximo elemento; 2) Como criar uma nova lista encadeada com um nó cabeça; 3) Como inserir elementos no início da lista encadeada movendo ponteiros.
O documento descreve as listas simplesmente encadeadas em C, incluindo:
1) A estrutura básica de um nó e lista;
2) Funções para inserir no início e fim da lista;
3) Função para imprimir a lista;
4) Função para remover elementos da lista.
2. BUSCA EM ARQUIVO BINÁRIO
Suponha que um banco mantém seus funcionários em um arquivo (mais de 10000
funcionários)
O banco deseja dar um aumento para o funcionário de código 305
Como encontrar o funcionário no arquivo?
INSTITUTO DE COMPUTAÇÃO - UFF 2
3. ALTERNATIVA 1 – BUSCA SEQUENCIAL
Ler arquivo do início até encontrar o funcionário
Muito custoso
No pior caso (funcionário não existe ou é o último), lê o arquivo inteiro
INSTITUTO DE COMPUTAÇÃO - UFF 3
4. BUSCA SEQUENCIAL POR FUNCIONÁRIO 305
Código Nome Salário
102 Joao Silva 1000
123 Carlos Albuquerque 1500
143 Ana Bueno 1500
200 Caio Gusmao 4000
239 Bianca Amarilo 3000
254 Arnaldo Souza 4300
305 Marisa Clara 5000
403 Bruno Simao 4500
410 Guilherme Santos 2000
502 Tatiana Andrade 2500
INSTITUTO DE COMPUTAÇÃO - UFF 4
5. BUSCA SEQUENCIAL POR FUNCIONÁRIO 305
Código Nome Salário
102 Joao Silva 1000
123 Carlos Albuquerque 1500
143 Ana Bueno 1500
200 Caio Gusmao 4000
239 Bianca Amarilo 3000
254 Arnaldo Souza 4300
305 Marisa Clara 5000
403 Bruno Simao 4500
410 Guilherme Santos 2000
502 Tatiana Andrade 2500
INSTITUTO DE COMPUTAÇÃO - UFF 5
6. BUSCA SEQUENCIAL POR FUNCIONÁRIO 305
Código Nome Salário
102 Joao Silva 1000
123 Carlos Albuquerque 1500
143 Ana Bueno 1500
200 Caio Gusmao 4000
239 Bianca Amarilo 3000
254 Arnaldo Souza 4300
305 Marisa Clara 5000
403 Bruno Simao 4500
410 Guilherme Santos 2000
502 Tatiana Andrade 2500
INSTITUTO DE COMPUTAÇÃO - UFF 6
7. BUSCA SEQUENCIAL POR FUNCIONÁRIO 305
Código Nome Salário
102 Joao Silva 1000
123 Carlos Albuquerque 1500
143 Ana Bueno 1500
200 Caio Gusmao 4000
239 Bianca Amarilo 3000
254 Arnaldo Souza 4300
305 Marisa Clara 5000
403 Bruno Simao 4500
410 Guilherme Santos 2000
502 Tatiana Andrade 2500
INSTITUTO DE COMPUTAÇÃO - UFF 7
8. BUSCA SEQUENCIAL POR FUNCIONÁRIO 305
Código Nome Salário
102 Joao Silva 1000
123 Carlos Albuquerque 1500
143 Ana Bueno 1500
200 Caio Gusmao 4000
239 Bianca Amarilo 3000
254 Arnaldo Souza 4300
305 Marisa Clara 5000
403 Bruno Simao 4500
410 Guilherme Santos 2000
502 Tatiana Andrade 2500
INSTITUTO DE COMPUTAÇÃO - UFF 8
9. BUSCA SEQUENCIAL POR FUNCIONÁRIO 305
Código Nome Salário
102 Joao Silva 1000
123 Carlos Albuquerque 1500
143 Ana Bueno 1500
200 Caio Gusmao 4000
239 Bianca Amarilo 3000
254 Arnaldo Souza 4300
305 Marisa Clara 5000
403 Bruno Simao 4500
410 Guilherme Santos 2000
502 Tatiana Andrade 2500
INSTITUTO DE COMPUTAÇÃO - UFF 9
10. BUSCA SEQUENCIAL POR FUNCIONÁRIO 305
Código Nome Salário
102 Joao Silva 1000
123 Carlos Albuquerque 1500
143 Ana Bueno 1500
200 Caio Gusmao 4000
239 Bianca Amarilo 3000
254 Arnaldo Souza 4300
305 Marisa Clara 5000
403 Bruno Simao 4500
410 Guilherme Santos 2000
502 Tatiana Andrade 2500
INSTITUTO DE COMPUTAÇÃO - UFF 10
12. BUSCA BINÁRIA POR FUNCIONÁRIO 305
Código Nome Salário
1 102 Joao Silva 1000
2 123 Carlos Albuquerque 1500
3 143 Ana Bueno 1500
4 200 Caio Gusmao 4000
5 239 Bianca Amarilo 3000
6 254 Arnaldo Souza 4300
7 305 Marisa Clara 5000
8 403 Bruno Simao 4500
9 410 Guilherme Santos 2000
10 502 Tatiana Andrade 2500
INSTITUTO DE COMPUTAÇÃO - UFF 12
Lê registro do meio e compara
chave buscada com a chave do
registro lido
início = 1
fim = 10
meio = trunc((inicio + fim)/2) = 5
305 > 239
13. BUSCA BINÁRIA POR FUNCIONÁRIO 305
INSTITUTO DE COMPUTAÇÃO - UFF 13
Repete procedimento na metade
do arquivo correspondente (se
chave menor, na metade de cima,
se chave maior, na metade de
baixo)
início = meio + 1
Código Nome Salário
1 102 Joao Silva 1000
2 123 Carlos Albuquerque 1500
3 143 Ana Bueno 1500
4 200 Caio Gusmao 4000
5 239 Bianca Amarilo 3000
6 254 Arnaldo Souza 4300
7 305 Marisa Clara 5000
8 403 Bruno Simao 4500
9 410 Guilherme Santos 2000
10 502 Tatiana Andrade 2500
14. BUSCA BINÁRIA POR FUNCIONÁRIO 305
INSTITUTO DE COMPUTAÇÃO - UFF 14
Lê registro do meio e compara
chave buscada com a chave do
registro lido
início = 6
fim = 10
meio = trunc((inicio + fim)/2) = 8
305 < 403
Código Nome Salário
1 102 Joao Silva 1000
2 123 Carlos Albuquerque 1500
3 143 Ana Bueno 1500
4 200 Caio Gusmao 4000
5 239 Bianca Amarilo 3000
6 254 Arnaldo Souza 4300
7 305 Marisa Clara 5000
8 403 Bruno Simao 4500
9 410 Guilherme Santos 2000
10 502 Tatiana Andrade 2500
15. BUSCA BINÁRIA POR FUNCIONÁRIO 305
INSTITUTO DE COMPUTAÇÃO - UFF 15
Repete procedimento na metade
do arquivo correspondente (se
chave menor, na metade de cima,
se chave maior, na metade de
baixo)
fim = meio - 1
Código Nome Salário
1 102 Joao Silva 1000
2 123 Carlos Albuquerque 1500
3 143 Ana Bueno 1500
4 200 Caio Gusmao 4000
5 239 Bianca Amarilo 3000
6 254 Arnaldo Souza 4300
7 305 Marisa Clara 5000
8 403 Bruno Simao 4500
9 410 Guilherme Santos 2000
10 502 Tatiana Andrade 2500
16. BUSCA BINÁRIA POR FUNCIONÁRIO 305
INSTITUTO DE COMPUTAÇÃO - UFF 16
Lê registro do meio e compara
chave buscada com a chave do
registro lido
início = 6
fim = 7
meio = trunc((inicio + fim)/2) = 6
305 > 254
Código Nome Salário
1 102 Joao Silva 1000
2 123 Carlos Albuquerque 1500
3 143 Ana Bueno 1500
4 200 Caio Gusmao 4000
5 239 Bianca Amarilo 3000
6 254 Arnaldo Souza 4300
7 305 Marisa Clara 5000
8 403 Bruno Simao 4500
9 410 Guilherme Santos 2000
10 502 Tatiana Andrade 2500
17. BUSCA BINÁRIA POR FUNCIONÁRIO 305
INSTITUTO DE COMPUTAÇÃO - UFF 17
Repete procedimento na metade
do arquivo correspondente (se
chave menor, na metade de cima,
se chave maior, na metade de
baixo)
inicio = meio + 1
Código Nome Salário
1 102 Joao Silva 1000
2 123 Carlos Albuquerque 1500
3 143 Ana Bueno 1500
4 200 Caio Gusmao 4000
5 239 Bianca Amarilo 3000
6 254 Arnaldo Souza 4300
7 305 Marisa Clara 5000
8 403 Bruno Simao 4500
9 410 Guilherme Santos 2000
10 502 Tatiana Andrade 2500
18. Código Nome Salário
1 102 Joao Silva 1000
2 123 Carlos Albuquerque 1500
3 143 Ana Bueno 1500
4 200 Caio Gusmao 4000
5 239 Bianca Amarilo 3000
6 254 Arnaldo Souza 4300
7 305 Marisa Clara 5000
8 403 Bruno Simao 4500
9 410 Guilherme Santos 2000
10 502 Tatiana Andrade 2500
BUSCA BINÁRIA POR FUNCIONÁRIO 305
INSTITUTO DE COMPUTAÇÃO - UFF 18
Lê registro do meio e compara
chave buscada com a chave do
registro lido
início = 7
fim = 7
meio = trunc((inicio + fim)/2) = 7
305 = 305
19. BUSCA BINÁRIA – DETALHES
Exige que se saiba o endereço de um determinado registro, para que seja possível
fazer o seek no arquivo para aquele endereço
Usar cálculo de endereço visto anteriormente
Exige que se saiba quantos registros o arquivo possui
Usar função tamanho_arquivo vista anteriormente
INSTITUTO DE COMPUTAÇÃO - UFF 19
20. COMPARAÇÃO
Na busca sequencial, para esse exemplo, foram lidos 7 registros até encontrar o
funcionário desejado
Na busca binária, foram lidos apenas 4 registros
Assumindo que o arquivo tem n registros:
Complexidade da busca sequencial: O(n)
Complexidade da busca binária: O(log n)
INSTITUTO DE COMPUTAÇÃO - UFF 20
21. EXERCÍCIO
Dado um arquivo de funcionários, ordenado, implementar uma função que faz busca
binária no arquivo
/* cod é a chave buscada
* *arq é o ponteiro para o arquivo
* tam é o número de registros do arquivo
*/
TFunc *busca_binaria(int cod, FILE *arq, int tam)
INSTITUTO DE COMPUTAÇÃO - UFF 21
24. MÉTODOS DE ORDENAÇÃO DE ARQUIVOS
Vários métodos podem ser aplicados
Possível solução:
métodos de ordenação em memória
1. Ler arquivo e armazenar os dados num array em memória
2. Ordenar o array
3. Gravar novo arquivo com os dados ordenados
25. CONVENÇÃO
Os algoritmos que veremos assumem que todas as chaves do arquivo estão num
vetor A
Na prática isso será algo como A[i].chave
26. ORDENAÇÃO POR INSERÇÃO
Insertion Sort
Nome do método se deve ao fato de que no i-ésimo passo ele insere o i-ésimo
elemento A[i] na posição correta entre A[1], A[2], …, A[i-1] que já foram
previamente ordenados
27. FUNCIONAMENTO DO INSERTION SORT
1. Assume que o primeiro valor já está ordenado
2. Pega o próximo valor, compara com os anteriores até descobrir em que posição
ele deveria estar
3. Abre espaço no vetor para encaixar o valor na posição correta
4. Encaixa o valor na posição correta
5. Se vetor ainda não terminou, volta para o passo 2
28. FUNCIONAMENTO DO INSERTION SORT
1. Assume que o primeiro valor já está ordenado
2. Pega o próximo valor, compara com os anteriores até descobrir em que
posição ele deveria estar
3. Abre espaço no vetor para encaixar o valor na posição correta
4. Encaixa o valor na posição correta
5. Se vetor ainda não terminou, volta para o passo 2
300 200 215 201
A
29. FUNCIONAMENTO DO INSERTION SORT
1. Assume que o primeiro valor já está ordenado
2. Pega o próximo valor, compara com os anteriores até descobrir em que posição
ele deveria estar
3. Abre espaço no vetor para encaixar o valor na posição correta
4. Encaixa o valor na posição correta
5. Se vetor ainda não terminou, volta para o passo 2
300 215 201
A
30. FUNCIONAMENTO DO INSERTION SORT
1. Assume que o primeiro valor já está ordenado
2. Pega o próximo valor, compara com os anteriores até descobrir em que posição
ele deveria estar
3. Abre espaço no vetor para encaixar o valor na posição correta
4. Encaixa o valor na posição correta
5. Se vetor ainda não terminou, volta para o passo 2
200 300 215 201
A
31. FUNCIONAMENTO DO INSERTION SORT
1. Assume que o primeiro valor já está ordenado
2. Pega o próximo valor, compara com os anteriores até descobrir em que
posição ele deveria estar
3. Abre espaço no vetor para encaixar o valor na posição correta
4. Encaixa o valor na posição correta
5. Se vetor ainda não terminou, volta para o passo 2
200 300 215 201
A
32. FUNCIONAMENTO DO INSERTION SORT
1. Assume que o primeiro valor já está ordenado
2. Pega o próximo valor, compara com os anteriores até descobrir em que posição
ele deveria estar
3. Abre espaço no vetor para encaixar o valor na posição correta
4. Encaixa o valor na posição correta
5. Se vetor ainda não terminou, volta para o passo 2
200 300 201
A
33. FUNCIONAMENTO DO INSERTION SORT
1. Assume que o primeiro valor já está ordenado
2. Pega o próximo valor, compara com os anteriores até descobrir em que posição
ele deveria estar
3. Abre espaço no vetor para encaixar o valor na posição correta
4. Encaixa o valor na posição correta
5. Se vetor ainda não terminou, volta para o passo 2
200 215 300 201
A
34. FUNCIONAMENTO DO INSERTION SORT
1. Assume que o primeiro valor já está ordenado
2. Pega o próximo valor, compara com os anteriores até descobrir em que
posição ele deveria estar
3. Abre espaço no vetor para encaixar o valor na posição correta
4. Encaixa o valor na posição correta
5. Se vetor ainda não terminou, volta para o passo 2
200 215 300 201
A
35. FUNCIONAMENTO DO INSERTION SORT
1. Assume que o primeiro valor já está ordenado
2. Pega o próximo valor, compara com os anteriores até descobrir em que posição
ele deveria estar
3. Abre espaço no vetor para encaixar o valor na posição correta
4. Encaixa o valor na posição correta
5. Se vetor ainda não terminou, volta para o passo 2
200 215 300
A
36. FUNCIONAMENTO DO INSERTION SORT
1. Assume que o primeiro valor já está ordenado
2. Pega o próximo valor, compara com os anteriores até descobrir em que posição
ele deveria estar
3. Abre espaço no vetor para encaixar o valor na posição correta
4. Encaixa o valor na posição correta
5. Se vetor ainda não terminou, volta para o passo 2
200 201 215 300
A
37. ALGORITMO INSERTION SORT
procedure insertionSort(A: array, size: int) {
//ENTRADA: A: array com as chaves (posições vão de [0, tam-1]);
// size: tamanho do array
//SAÍDA: A: array ordenado
for j := 1 to size-1 do {
key := A[j];
i := j – 1;
while (i >= 0) and (A[i] > key) do {
A[i+1] := A[i];
i := i –1;
}
A[i+1] := key
}
38. INSERTION SORT PARA ORDENAR FUNCIONÁRIOS
USANDO VETOR EM MEMÓRIA
Ver código no site da disciplina
INSTITUTO DE COMPUTAÇÃO - UFF 38
39. COMPLEXIDADE DO INSERTION SORT
Complexidade pior caso O(n2)
Complexidade caso médio O(n2)
Complexidade melhor caso O(n)
Complexidade de espaço O(n)
40. OUTROS ALGORITMOS DE ORDENAÇÃO
Selection Sort
Buble Sort
Quick Sort
...
INSTITUTO DE COMPUTAÇÃO - UFF 40
41. ORDENAÇÃO DE ARQUIVOS
Qualquer algoritmo de ordenação pode ser usado para ordenar arquivos, desde
que:
os registros caibam todos na memória de uma só vez
Alternativa que gasta menos memória:
Fazer a ordenação direto no arquivo, sem usar um vetor auxiliar
Só pode ser feito para arquivos binários, pois é necessário usar seek para se deslocar de um registro
a outro
INSTITUTO DE COMPUTAÇÃO - UFF 41
42. INSERTION SORT DIRETO NO ARQUIVO
Ver código no site da disciplina
INSTITUTO DE COMPUTAÇÃO - UFF 42
43. EXERCÍCIO
Implementar uma função que faz o Selection Sort direto no arquivo, sem usar um
vetor auxiliar
void selection_sort_disco(FILE *arq, int tam)
Lembrete: o Selecion Sort percorre o arquivo, procurando o menor elemento. Quando
encontra, coloca-o na posição 1 (troca o elemento da posição 1 por ele). Depois,
procura o próximo menor. Quando encontra, coloca-o na posição 2 (troca o elemento
menor pelo da posição 2), e assim por diante.
INSTITUTO DE COMPUTAÇÃO - UFF 43