Vetor de 1000000 de strings é ruim?

ola!
tenho de fazer um trabalho de aula mas nao tou conseguindo, é pra implementar o radixSort.
pensei em colocar cada digito do numero em um vetor, mas nao dá certo.
acho que só dá certo transformando em string, mas tenho que ordenar listar de 1000000 de elementos.
pessoal um vetor com 1000000 de strings sai muito caro pra memória?

até!

Você realmente precisa de uma resposta ?

Sem dúvida isso é extremamente caro para a memória.

Ele nem aloca um vetor deste tamanho eu acho.

Pensei que se for um vetor [] ele é alocado na memória sequencialmente ainda.

Inviável…

[quote=souarte]ola!
tenho de fazer um trabalho de aula mas nao tou conseguindo, é pra implementar o radixSort.
pensei em colocar cada digito do numero em um vetor, mas nao dá certo.
acho que só dá certo transformando em string, mas tenho que ordenar listar de 1000000 de elementos.
pessoal um vetor com 1000000 de strings sai muito caro pra memória?

até![/quote]
Vamos fazer continhas:
Vamos supor que um objeto String com 1 caracter ocupe 16 bytes na memória ( valor arbitrário ) e que você crie 1.000.000 desses objetos diferentes, que no final nos daria 16.000.000 bytes na memória e isso é aproximandamente 16MB. Como sabemos no mundo real que os objetos não terão somente 16 bytes, que você não criará objetos totamente diferentes e que você ainda tem que alocar espaço para o vetor, então, sim, isso é muito custoso para a memória.

Você está com dificuldade de colocar cada algarismo de um número em um pedaço do vetor? Já pensou em ir colocando os números de acordo com o resto da divisão inteira pelos múltiplos da base numérica menores que o número em questão? Trocando em miúdos, ir dividindo por 10, 100, 1000… e ir pegando só um algarismo.

Até!

Será que usando uma lista encadeada não ficaria melhor?

Vai usar muito mais memória do que com um vetor simples (o que já sai caro pra caramba).

Você poderia usar um TreeSet, que mantem a lista sempre ordenada, mas não permite duplicatas. Vc so precisa implementar comparable e sobrepor o método compareTo faça um IntegerParseInt nas strins e as compare-as como inteiros, pq pelo que entendi isso é o que você quer, números inteiros. Ou então faça uma lista e implemente comparable se você quer que tenha duplicatas.

Espero ter ajudado.

Porque as pessoas não lêem direito o tópico antes de responder?

Algo barato:
Use vetor comum e ordene por quicksort

public void quicksort(int p, int q, int array[]) {

		if (p < q) {

			int x = particao(p, q, array);

			quicksort(p, x - 1, array);

			quicksort(x + 1, q, array);

		}

	}

        public int particao(int p, int q, int array[]) {

		int j = p - 1;

		int aux = array[q];

		for (int i = p; i <= q; i++) {

			if (array[i] <= aux)

				troca(array, i, ++j);

		}

		return j;

	}

        public void troca(int array[], int i, int j) {

		int aux = array[i];

		array[i] = array[j];

		array[j] = aux;

	}

Algo barato:
Use vetor comum e ordene por quicksort

[/quote]

Você sabe o que é complexidade espacial? O que foi colocado como inviável aqui é o tamanho do vetor em memória, não o custo de realizar a ordenação do mesmo.

Algo barato:
Use vetor comum e ordene por quicksort

[/quote]

Você sabe o que é complexidade espacial? O que foi colocado como inviável aqui é o tamanho do vetor em memória, não o busco de realizar a ordenação do mesmo.[/quote]

Algo barato = não usar objetos especialistas ex: ArrayList, TreeSet, etc… = menos consumo de memória = usar um simples vetor.

Citei o quick sort por ser considerado um bom método de ordenação.

Algo barato:
Use vetor comum e ordene por quicksort
[/quote]

ELE DISSE QUE TEM QUE SER RADIXSORT!!!

Algo barato:
Use vetor comum e ordene por quicksort
[/quote]

ELE DISSE QUE TEM QUE SER RADIXSORT!!![/quote]

Ahuiahiauhaiuhaiuah

Realmente não vi mesmo, ahuiahaiuhaiauhaiuha.

E pior que li de novo antes do post passado e não vi, kkkkk

Desculpa ae.