diff --git a/fonte/U1 - Introdução/java/Log.class b/fonte/U1 - Introdução/java/Log.class new file mode 100644 index 0000000..754ca6b Binary files /dev/null and b/fonte/U1 - Introdução/java/Log.class differ diff --git a/fonte/U4 - Ordenação em memória principal/c/bolha.o b/fonte/U4 - Ordenação em memória principal/c/bolha.o deleted file mode 100644 index 2c4735d..0000000 Binary files a/fonte/U4 - Ordenação em memória principal/c/bolha.o and /dev/null differ diff --git a/fonte/U4 - Ordenação em memória principal/c/heapsort.c b/fonte/U4 - Ordenação em memória principal/c/heapsort.c index cc9a9f4..1a2c850 100644 --- a/fonte/U4 - Ordenação em memória principal/c/heapsort.c +++ b/fonte/U4 - Ordenação em memória principal/c/heapsort.c @@ -1,5 +1,4 @@ #include "heapsort.h" -#include "geracao.h" //============================================================================= void constroi(int *array, int tamHeap){ for(int i = tamHeap; i > 1 && array[i] > array[i/2]; i /= 2){ diff --git a/fonte/U4 - Ordenação em memória principal/c/heapsort.h b/fonte/U4 - Ordenação em memória principal/c/heapsort.h index 7ba67c8..e2057c0 100644 --- a/fonte/U4 - Ordenação em memória principal/c/heapsort.h +++ b/fonte/U4 - Ordenação em memória principal/c/heapsort.h @@ -1,6 +1,8 @@ #ifndef HEAPSORT_H #define HEAPSORT_H //============================================================================= +#include "geracao.h" +//============================================================================= void constroi(int *array, int tamHeap); //============================================================================= int getMaiorFilho(int *array, int i, int tamHeap); diff --git a/fonte/U4 - Ordenação em memória principal/c/mergesort.c b/fonte/U4 - Ordenação em memória principal/c/mergesort.c index 1f6f2b3..50ef40f 100644 --- a/fonte/U4 - Ordenação em memória principal/c/mergesort.c +++ b/fonte/U4 - Ordenação em memória principal/c/mergesort.c @@ -1,6 +1,45 @@ #include "mergesort.h" +#include //============================================================================= void mergesort(int *array, int n) { - array[0] = n; + mergesortRec(array, 0, n-1); +} +//============================================================================= +void mergesortRec(int *array, int esq, int dir){ + if (esq < dir){ + int meio = (esq + dir) / 2; + mergesortRec(array, esq, meio); + mergesortRec(array, meio + 1, dir); + intercalar(array, esq, meio, dir); + } +} +//============================================================================= +void intercalar(int* array, int esq, int meio, int dir){ + int n1, n2, i, j, k; + + //Definir tamanho dos dois subarrays + n1 = meio-esq+1; + n2 = dir - meio; + + int* a1 = (int*) malloc((n1+1) * sizeof(int)); + int* a2 = (int*) malloc((n2+1) * sizeof(int)); + + //Inicializar primeiro subarray + for(i = 0; i < n1; i++){ + a1[i] = array[esq+i]; + } + + //Inicializar segundo subarray + for(j = 0; j < n2; j++){ + a2[j] = array[meio+j+1]; + } + + //Sentinela no final dos dois arrays + a1[i] = a2[j] = 0x7FFFFFFF; + + //Intercalacao propriamente dita + for(i = j = 0, k = esq; k <= dir; k++){ + array[k] = (a1[i] <= a2[j]) ? a1[i++] : a2[j++]; + } } //============================================================================= diff --git a/fonte/U4 - Ordenação em memória principal/c/mergesort.h b/fonte/U4 - Ordenação em memória principal/c/mergesort.h index 8fa5c20..3f1b041 100644 --- a/fonte/U4 - Ordenação em memória principal/c/mergesort.h +++ b/fonte/U4 - Ordenação em memória principal/c/mergesort.h @@ -5,4 +5,8 @@ //============================================================================= void mergesort(int *array, int n); //============================================================================= +void mergesortRec(int *array, int esq, int dir); +//============================================================================= +void intercalar(int* array, int esq, int meio, int dir); +//============================================================================= #endif diff --git a/fonte/U4 - Ordenação em memória principal/java/Bolha.class b/fonte/U4 - Ordenação em memória principal/java/Bolha.class deleted file mode 100644 index ba2338d..0000000 Binary files a/fonte/U4 - Ordenação em memória principal/java/Bolha.class and /dev/null differ diff --git a/fonte/U4 - Ordenação em memória principal/java/Countingsort.class b/fonte/U4 - Ordenação em memória principal/java/Countingsort.class deleted file mode 100644 index ccd7c4f..0000000 Binary files a/fonte/U4 - Ordenação em memória principal/java/Countingsort.class and /dev/null differ diff --git a/fonte/U4 - Ordenação em memória principal/java/Geracao.class b/fonte/U4 - Ordenação em memória principal/java/Geracao.class deleted file mode 100644 index ee6c1c9..0000000 Binary files a/fonte/U4 - Ordenação em memória principal/java/Geracao.class and /dev/null differ diff --git a/fonte/U4 - Ordenação em memória principal/java/Heapsort.class b/fonte/U4 - Ordenação em memória principal/java/Heapsort.class deleted file mode 100644 index a8512d2..0000000 Binary files a/fonte/U4 - Ordenação em memória principal/java/Heapsort.class and /dev/null differ diff --git a/fonte/U4 - Ordenação em memória principal/java/Insercao.class b/fonte/U4 - Ordenação em memória principal/java/Insercao.class deleted file mode 100644 index b1eaf60..0000000 Binary files a/fonte/U4 - Ordenação em memória principal/java/Insercao.class and /dev/null differ diff --git a/fonte/U4 - Ordenação em memória principal/java/Mergesort.class b/fonte/U4 - Ordenação em memória principal/java/Mergesort.class deleted file mode 100644 index 5922124..0000000 Binary files a/fonte/U4 - Ordenação em memória principal/java/Mergesort.class and /dev/null differ diff --git a/fonte/U4 - Ordenação em memória principal/java/Mergesort.java b/fonte/U4 - Ordenação em memória principal/java/Mergesort.java index 2662cbb..2cea4fc 100644 --- a/fonte/U4 - Ordenação em memória principal/java/Mergesort.java +++ b/fonte/U4 - Ordenação em memória principal/java/Mergesort.java @@ -5,35 +5,77 @@ */ class Mergesort extends Geracao { - /** - * Construtor. - */ + /** + * Construtor. + */ public Mergesort(){ super(); } - /** - * Construtor. - * @param int tamanho do array de numeros inteiros. - */ + /** + * Construtor. + * @param int tamanho do array de numeros inteiros. + */ public Mergesort(int tamanho){ super(tamanho); } - /** - * Algoritmo de ordenacao Mergesort. - */ + /** + * Algoritmo de ordenacao Mergesort. + */ @Override public void sort() { + mergesort(0, n-1); } - /** - * Algoritmo de ordenacao Mergesort. + /** + * Algoritmo de ordenacao Mergesort. * @param int esq inicio do array a ser ordenado * @param int dir fim do array a ser ordenado - */ - private void mergesort(int esq, int dir) { - } + */ + private void mergesort(int esq, int dir) { + if (esq < dir){ + int meio = (esq + dir) / 2; + mergesort(esq, meio); + mergesort(meio + 1, dir); + intercalar(esq, meio, dir); + } + } + + /** + * Algoritmo que intercala os elementos entre as posicoes esq e dir + * @param int esq inicio do array a ser ordenado + * @param int meio posicao do meio do array a ser ordenado + * @param int dir fim do array a ser ordenado + */ + public void intercalar(int esq, int meio, int dir){ + int n1, n2, i, j, k; + + //Definir tamanho dos dois subarrays + n1 = meio-esq+1; + n2 = dir - meio; + + int[] a1 = new int[n1+1]; + int[] a2 = new int[n2+1]; + + //Inicializar primeiro subarray + for(i = 0; i < n1; i++){ + a1[i] = array[esq+i]; + } + + //Inicializar segundo subarray + for(j = 0; j < n2; j++){ + a2[j] = array[meio+j+1]; + } + + //Sentinela no final dos dois arrays + a1[i] = a2[j] = 0x7FFFFFFF; + + //Intercalacao propriamente dita + for(i = j = 0, k = esq; k <= dir; k++){ + array[k] = (a1[i] <= a2[j]) ? a1[i++] : a2[j++]; + } + } } diff --git a/fonte/U4 - Ordenação em memória principal/java/Principal.class b/fonte/U4 - Ordenação em memória principal/java/Principal.class deleted file mode 100644 index 2977650..0000000 Binary files a/fonte/U4 - Ordenação em memória principal/java/Principal.class and /dev/null differ diff --git a/fonte/U4 - Ordenação em memória principal/java/Quicksort.class b/fonte/U4 - Ordenação em memória principal/java/Quicksort.class deleted file mode 100644 index 0f06cdc..0000000 Binary files a/fonte/U4 - Ordenação em memória principal/java/Quicksort.class and /dev/null differ diff --git a/fonte/U4 - Ordenação em memória principal/java/Selecao.class b/fonte/U4 - Ordenação em memória principal/java/Selecao.class deleted file mode 100644 index 70c5da2..0000000 Binary files a/fonte/U4 - Ordenação em memória principal/java/Selecao.class and /dev/null differ diff --git a/fonte/U4 - Ordenação em memória principal/java/Shellsort.class b/fonte/U4 - Ordenação em memória principal/java/Shellsort.class deleted file mode 100644 index 33055f7..0000000 Binary files a/fonte/U4 - Ordenação em memória principal/java/Shellsort.class and /dev/null differ