private Node adicionar(Node raizArvore, DataSetEl elemento) { if (raizArvore == null) { raizArvore = new Node(elemento); } else { if (raizArvore.elemento.room_id > elemento.room_id) { raizArvore.left = adicionar(raizArvore.left, elemento); } else { if (raizArvore.elemento.room_id < elemento.room_id) { raizArvore.right = adicionar(raizArvore.right, elemento); } else { Console.WriteLine("O elemento " + elemento.room_id + " já foi inserido anteriormente na árvore."); } } } return(raizArvore); }
/** * Busca em cada elemento do dataset (desordenado) pelo room_id passado como parâmetro * A variável loops é o auxiliar que conta as comparações */ public static void buscaSequencial(List <DataSetEl> dataSet, long roomId) { int loops = 0; bool find = false; foreach (DataSetEl dataSetEl in dataSet) { loops++; if (dataSetEl.room_id == roomId) { find = true; break; } } Console.WriteLine("Comparações = " + loops); if (find) { DataSetEl.printroom(dataSet[loops - 1]); } else { DataSetEl.printroom(null); } }
public void pesquisar(long roomId) { int loops = 0; Elemento elementoaux = busca(roomId, ref loops); if (elementoaux == null) { Console.WriteLine("Quarto não encontrado."); } else { DataSetEl.printroom(elementoaux.quarto); Console.WriteLine(""); Console.WriteLine("Comparações = " + loops); } }
/* * Função que encapsula as chamadas recursivas que irão identificar o quarto buscado */ public static void buscaBinaria(List <DataSetEl> dataSet, long roomId) { int loops = 0, index = 0; index = buscaBinaria(dataSet, roomId, 0, dataSet.Count - 1, ref loops); Console.WriteLine("Comparações = " + loops); if (index != -1) { DataSetEl.printroom(dataSet[index]); } else { DataSetEl.printroom(null); } }
/** * Faz uma chamada de uma função recursiva que irá dividir os ramos da arvore aproximando-se * do valor buscado. * */ public Node pesquisar(long roomId) { int loops = 0; Node node = pesquisar(this.raiz, roomId, ref loops); Console.WriteLine("Comparações = " + loops); if (node != null) { DataSetEl.printroom(node.elemento); } else { DataSetEl.printroom(null); } return(node); }
// bubble sort public static List <DataSetEl> sort(List <DataSetEl> dataset) { int i, j; for (i = 0; i < dataset.Count - 1; i++) { for (j = 0; j < dataset.Count - i - 1; j++) { if (dataset[j].room_id > dataset[j + 1].room_id) { DataSetEl temp = dataset[j]; dataset[j] = dataset[j + 1]; dataset[j + 1] = temp; } } } return(dataset); }
public void inserirElemento(DataSetEl ele) { Elemento novo = new Elemento(ele); novo.quarto = ele; if (ini == null) { ini = novo; fim = novo; novo.prox = null; } else { fim.prox = novo; fim = novo; fim.prox = null; } tam++; }
/* * Lê o arquivo de dataset e transforma na lista abstrata */ static void readFileContent(ref List <DataSetEl> dataSetArray) { try { int counter = 0; string line; StreamReader file = new StreamReader("airbnb_reduzido.txt"); while ((line = file.ReadLine()) != null) { if (counter > 0) { string[] lineSplited = line.Split('\t'); DataSetEl aux = new DataSetEl(); aux.room_id = long.Parse(lineSplited[0]); aux.host_id = long.Parse(lineSplited[1]); aux.room_type = lineSplited[2]; aux.country = lineSplited[3]; aux.city = lineSplited[4]; aux.neighborhood = lineSplited[5]; aux.reviews = lineSplited[6]; aux.overall_satisfaction = lineSplited[7]; aux.accommodates = lineSplited[8]; aux.bedrooms = lineSplited[9]; aux.price = lineSplited[10]; aux.property_type = lineSplited[11]; dataSetArray.Add(aux); } counter++; } } catch (IOException e) { Console.WriteLine("The file could not be read:"); Console.WriteLine(e.Message); } }
/* * Função que imprime as informações sobre os quartos */ public static void printroom(DataSetEl quarto) { if (quarto == null) { Console.WriteLine("Quarto não localizado."); } else { Console.WriteLine("Room ID: " + quarto.room_id); Console.WriteLine("Host ID: " + quarto.host_id); Console.WriteLine("Room Type: " + quarto.room_type); Console.WriteLine("Country: " + quarto.country); Console.WriteLine("City: " + quarto.city); Console.WriteLine("Neighborhood: " + quarto.neighborhood); Console.WriteLine("Reviews: " + quarto.reviews); Console.WriteLine("Overall Satisfaction: " + quarto.overall_satisfaction); Console.WriteLine("Accommodates: " + quarto.accommodates); Console.WriteLine("Bedrooms: " + quarto.bedrooms); Console.WriteLine("Price: " + quarto.price); Console.WriteLine("Property Type: " + quarto.property_type); } }
public Elemento(DataSetEl elemento) { quarto = elemento; prox = null; }
public void inserir(DataSetEl alunoNovo) { this.raiz = adicionar(this.raiz, alunoNovo); }