Posts

Showing posts with the label Algorithms and Data Structures

Merge Sort

É um algoritmo de ordenação que usa o princípio de dividir e conquistar. Na implementação abaixo, inicialmente dividimos um vetor com N elementos em vários vetores menores. Realizadas estas divisões, teremos então vetores unitários que serão fundidos através da operação merge, formando assim vetores maiores ordenados. Isso ocorre sucessivamente até termos o vetor inteiro ordenado. import java.io.*; import java.util.*; import java.lang.*; class Main  {     public static void main(String[] args) throws NumberFormatException, IOException {         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));         int qteElementos = leitor(br);         int[] vetor = new int[qteElementos];                 for (int i = 0; i < qteElementos; i++) {      ...

Bubble Sort

Este algoritmo de ordenação compara cada elemento de uma dada posição com o elemento da posição seguinte, a fim de, ao final da primeira iteração, o último elemento do vetor ser o maior elemento do conjunto. Ao final da segunda iteração, o penúltimo elemento do vetor será o segundo maior elemento do conjunto e assim sucessivamente, até que o primeiro elemento do vetor seja o menor. Este comportamento assemelha-se ao das bolhas, o que dá nome ao algoritmo. import java.io.*; import java.util.*; class Main {     public static void main(String[] args) throws NumberFormatException, IOException {         Main processando = new Main();         processando.processa();                System.exit(0);     }         static int leitor(BufferedReader br) throws NumberFormatException, IOExceptio...

Insertion Sort

Neste algoritmo de ordenação, a partir do segundo elemento do vetor, temos que observar se o elemento em questão é menor do que o(s) elemento(s) anterior(es) e posicioná-lo de acordo com o seu valor. Se for verificado que o elemento é menor do que um elemento que já está ordenado no vetor, todos os elementos a partir deste deverão ser deslocados uma posição à direita para a inclusão deste novo elemento. Este procedimento é realizado até a verificação de todos os elementos. A troca pode ser feita utilizando um vetor auxiliar, o que aumenta o uso de memória, ou no próprio vetor. import java.io.*; import java.util.*; class Main {     public static void main(String[] args) throws NumberFormatException, IOException {         Main processando = new Main();         processando.processa();                System.exit(0);  ...

Selection Sort

É um algoritmo de ordenação simples, o qual verifica qual é o menor elemento no vetor e o coloca na primeira posição. Em seguida, verifica qual é o segundo menor elemento e o coloca na segunda posição, e assim sucessivamente até os últimos elementos. import java.io.*; import java.util.*; class Main {     public static void main(String[] args) throws NumberFormatException, IOException {         Main ordenacao = new Main();         ordenacao.ordena();                System.exit(0);     }         static int leitor(BufferedReader br) throws NumberFormatException, IOException {         int n;         int resp = 0;         int sinal = 1;         while (true) {...