//O método ImprimirAirbnb recebe o objeto de dados, verifica se ele não é nulo e, caso não for, mostra linha a linha o dado Airbnb obtido. private static void ImprimirAirbnb(Airbnb Dado) { if (Dado != null) { Console.WriteLine( "\nRoomID: {0}\n" + "HostID: {1}\n" + "Room Type: {2}\n" + "Country: {3}\n" + "City: {4}\n" + "Neighborhood: {5}\n" + "Reviews: {6}\n" + "Overall Satisfaction: {7:0.0}\n" + "Accommodates: {8}\n" + "Bedrooms: {9:0.0}\n" + "Price: {10:0.0}\n" + "Property Type: {11}", Dado.RoomID, Dado.HostID, Dado.RoomType, Dado.Country, Dado.City, Dado.Neighborhood, Dado.Reviews, Dado.OverallSatisfaction, Dado.Accommodates, Dado.Bedrooms, Dado.Price, Dado.PropertyType ); } }
//Por último, o método Pesquisar recebe o RoomID como parâmetro e um NumComp como referência //Ele calcula a posição na Tabela que esse Airbnb foi inserido //Logo, o objeto Dado recebe o resultado da pesquisa (implementada na classe Lista) para esse RoomID e o retorna //O NumComp é atualizado primeiramente aqui para sinalizar a busca da posição e como referência na chamada do método Pesquisa na classe Lista public Airbnb Pesquisar(int RoomID, ref int NumComp) { int Pos = Mod(RoomID); NumComp++; Airbnb Dado = Tabela[Pos].Pesquisar(RoomID, ref NumComp); return(Dado); }
//O método inserir funciona de forma recursiva que verifica No a No se o RoomID do seu item é maior ou menor que o RoomID do item a ser inserido //Se for menor, insere no No filho da esquerda //Se for maior, insere no No filho da direita //Quando encontra o No nulo, faz a inserção neste private No inserir(No no, Airbnb item) { if (no == null) { no = new No(item); } else if (item.RoomID < no.Item.RoomID) { no.Esq = inserir(no.Esq, item); } else if (item.RoomID > no.Item.RoomID) { no.Dir = inserir(no.Dir, item); } return(no); }
public void Inserir(Airbnb Dado) { Elemento Novo = new Elemento(); Novo.Airbnb = Dado; if (Início == null) { Início = Novo; Fim = Novo; Novo.Prox = null; } else { Fim.Prox = Novo; Fim = Novo; Fim.Prox = null; } }
//Implementação de um método QuickSort que fará a ordenação necessária para a Busca Binária private void QuickSort(Airbnb[] vetor, int esquerda, int direita) { int i = esquerda, j = direita; Airbnb pivot = vetor[(esquerda + direita) / 2]; while (i <= j) { while (vetor[i].RoomID < pivot.RoomID && i < direita) { i++; } while (vetor[j].RoomID > pivot.RoomID && j > esquerda) { j--; } if (i <= j) { Airbnb aux = vetor[i]; vetor[i] = vetor[j]; vetor[j] = aux; i++; j--; } } if (j > esquerda) { QuickSort(vetor, esquerda, j); } if (i < direita) { QuickSort(vetor, i, direita); } }
//O método Pesquisa Airbnb recebe como parâmetros o RoomID a ser pesquisado, o NumComp para computar as comparações e um string com o tipo de pesquisa; private static Airbnb PesquisaAirbnb(int RoomID, int NumComp, string TipoPesquisa) { //Instanciando a classe Pesquisa (que contém todos os métodos) e passando como parâmetro a Lista de dados extraídos do arquivo airbnb.txt; Pesquisa MinhasPesquisas = new Pesquisa(ExtrairDados("airbnb.txt")); //Zerando o número de comparações a cada vez que essa função é chamada; NumComp = 0; //As condições a seguir avaliam o string TipoPesquisa para exibir as estatísticas da pesquisa e chamar a função de busca referente a cada tipo; //Inicia um cronômetro para avaliar quanto tempo a função demora para retornar o objeto Airbnb; //Logo, mostra as estatísticas de tempo e número de comparações seguindo do retorno de dados se encontrar o RoomID, e caso não encontre mostra a mensagem "Airbnb não encontrado!". if (TipoPesquisa == "Pesquisa Sequencial") { Console.Clear(); Console.Write("Pesquisando RoomID {0}...", RoomID); Stopwatch cron = Stopwatch.StartNew(); Airbnb DadoAirbnb = MinhasPesquisas.PesquisaSequencial(RoomID, ref NumComp); cron.Stop(); Console.Clear(); Console.WriteLine("Pesquisa Concluída"); Console.WriteLine("------------------"); Console.WriteLine("\nRoomID pesquisado: {0}", RoomID); Console.WriteLine("Número de Comparações: {0}", NumComp); Console.WriteLine("Tempo: {0} ms\n", cron.ElapsedMilliseconds); Console.WriteLine("------------------"); if (DadoAirbnb == null) { Console.WriteLine("Airbnb não encontrado!"); } else { return(DadoAirbnb); } } else if (TipoPesquisa == "Pesquisa Binária") { Console.Clear(); Console.Write("Pesquisando RoomID {0}...", RoomID); Stopwatch cron = Stopwatch.StartNew(); Airbnb DadoAirbnb = MinhasPesquisas.PesquisaBinária(RoomID, ref NumComp); cron.Stop(); Console.Clear(); Console.WriteLine("Pesquisa Concluída"); Console.WriteLine("------------------"); Console.WriteLine("\nRoomID pesquisado: {0}", RoomID); Console.WriteLine("Número de Comparações: {0}", NumComp); Console.WriteLine("Tempo: {0} ms\n", cron.ElapsedMilliseconds); Console.WriteLine("------------------"); if (DadoAirbnb == null) { Console.WriteLine("Airbnb não encontrado!"); } else { return(DadoAirbnb); } } else if (TipoPesquisa == "Árvore Binária de Busca") { Console.Clear(); Console.Write("Pesquisando RoomID {0}...", RoomID); Stopwatch cron = Stopwatch.StartNew(); Airbnb DadoAirbnb = MinhasPesquisas.Árvore(RoomID, ref NumComp); cron.Stop(); Console.Clear(); Console.WriteLine("Pesquisa Concluída"); Console.WriteLine("------------------"); Console.WriteLine("\nRoomID pesquisado: {0}", RoomID); Console.WriteLine("Número de Comparações: {0}", NumComp); Console.WriteLine("Tempo: {0} ms\n", cron.ElapsedMilliseconds); Console.WriteLine("------------------"); if (DadoAirbnb == null) { Console.WriteLine("Airbnb não encontrado!"); } else { return(DadoAirbnb); } } else if (TipoPesquisa == "Tabela Hash") { Console.Clear(); Console.Write("Pesquisando RoomID {0}...", RoomID); Stopwatch cron = Stopwatch.StartNew(); Airbnb DadoAirbnb = MinhasPesquisas.TabelaHash(RoomID, ref NumComp); cron.Stop(); Console.Clear(); Console.WriteLine("Pesquisa Concluída"); Console.WriteLine("------------------"); Console.WriteLine("\nRoomID pesquisado: {0}", RoomID); Console.WriteLine("Número de Comparações: {0}", NumComp); Console.WriteLine("Tempo: {0} ms\n", cron.ElapsedMilliseconds); Console.WriteLine("------------------"); if (DadoAirbnb == null) { Console.WriteLine("Airbnb não encontrado!"); } else { return(DadoAirbnb); } } return(null); }
//O método Inserir recebe o objeto Airbnb a ser inserido //Calcula a posição de inserção com o RoomID do objeto //Depois chama a função Inserir na posição calculada da tabela(da classe Lista), passando o objeto Airbnb como parâmetro public void Inserir(Airbnb Dado) { int Pos = Mod(Dado.RoomID); Tabela[Pos].Inserir(Dado); }
public Elemento() { Airbnb = null; Prox = null; }
//Implementação da função Inserir da Árvore, que recebe o objeto Airbnb e chama um outro método que faz a inserção do objeto na Árvore public void Inserir(Airbnb item) { raiz = inserir(raiz, item); }
public No(Airbnb item) { Item = item; Esq = Dir = null; }