Boa noite!!
Sou estudante de ciência da computação e estou fazendo um trabalho para conclusão de semestre, porém estou com muitas dúvidas, segue como o trabalho deve ser feito.
Desenvolver um sistema computacional completo que obtenha os dados, efetue a ordenação e compare os desempenhos entre eles. A unidade de medida para efeito de comparação deverá ser o tempo total de ordenação.
Não deverá ser contabilizado o tempo de aquisição dos dados, apenas o processo específico de ordenação.
Os dados que serão utilizados para as ordenações deverão ser externos (obtidos a partir de valores previamente armazenados, tais como arquivos de texto) e internos (valores aleatórios gerados pelo próprio programa ou fornecidos diretamente pelo usuário).
Escolhi o método de inserção, seleção e quick sort.
Segue os códigos:
Seleção:public static void SelectionSort(int[] v) {
int index_min,
aux;
for (int i = 0; i < v.length; i++) {
index_min = i;
for (int j = i + 1; j < v.length; j++) {
if (v[j] < v[index_min]) {
index_min = j;
}
}
if (index_min != i) {
aux = v[index_min];
v[index_min] = v[i];
v[i] = aux;
}
}
}
public static void insertionSort(int[] array) {
for (int i = 1; i < array.length; i++)
{
int a = array[i];
int j;
for (j = i - 1; j >= 0 && array[j] > a; j--)
{
array[j + 1] = array[j];
array[j] = a;
}
}
}
public static void quick_sort(int []v,int ini, int fim) {
int meio;
if (ini < fim) {
meio = partition(v, ini, fim);
quick_sort(v, ini, meio);
quick_sort(v, meio + 1, fim);
}
}
public static int partition(int []v, int ini, int fim) {
int pivo, topo, i;
pivo = v[ini];
topo = ini;
for (i = ini + 1; i < fim; i++) {
if (v[i] < pivo) {
v[topo] = v[i];
v[i] = v[topo + 1];
topo++;
}
}
v[topo] = pivo;
return topo;
}
Só preciso que me deêm o caminho de como fazer.
Desde já agradeço a ajuda!
