[Ajuda] RadixSort

Olá,

acho que é o primeiro post que faço, ja tenho registo a um tempinho mais sempre pra pesquisa
mais estou a muito tempo pesquisando sobre radix sort
e nao acho nada que me ajude.

sei o funcionamento no mesmo na teoria
mais nao consigo achar o codigo fonte.

alguem pode me ajudar?

Se o problema for sintaxe, podemos ajudar sim.
Eu não me recordo do radix sort, mas se você puder colocar o algoritmo aqui eu tento ajuda-lo.
Abraços

[quote=henriqueluz]Se o problema for sintaxe, podemos ajudar sim.
Eu não me recordo do radix sort, mas se você puder colocar o algoritmo aqui eu tento ajuda-lo.
Abraços[/quote]

o Problema que eu tenho a terioria,
so que eu preciso do fonte pra rodar ele sabe
nem o algoritmo nao tenho.

gostaria que se alguem tive-se o fonte disponibilizase pra mim!

[google]radixsort java[/google]
Clique em “Estou com Sorte”

Vou tentar usar esse,

eu testei sabe

so que para ordenar array de 50 numeros ele é lento =/
mais que os outro aqui testei

vou ver aqui

Obrigado

Bom o codigo esta para arrays de int, alguem poderia me ajudar para fazer ordenar array de string?
aqui ela meche com bit e eu nao sei mecher com isso ainda =/
tenho que colocar todos meus algoritmos pra ordenar string será que é possivel?

public class RadixSort {

	public static void radixSort(int[] arr) {
		if (arr.length == 0)
			return;

		int[][] np = new int[arr.length][2];
		int[] q = new int[0x100];
		int i, j, k, l, f = 0;

		for (k = 0; k < 4; k++) {
			for (i = 0; i < (np.length - 1); i++)
				np[i][1] = i + 1;
			np[i][1] = -1;

			for (i = 0; i < q.length; i++)
				q[i] = -1;
			for (f = i = 0; i < arr.length; i++) {
				j = ((0xFF << (k << 3)) & arr[i]) >> (k << 3);
				if (q[j] == -1)
					l = q[j] = f;

				else {
					l = q[j];
					while (np[l][1] != -1)
						l = np[l][1];
					np[l][1] = f;
					l = np[l][1];
				}

				f = np[f][1];
				np[l][0] = arr[i];
				np[l][1] = -1;
			}
			for (l = q[i = j = 0]; i < 0x100; i++)
				for (l = q[i]; l != -1; l = np[l][1])
					arr[j++] = np[l][0];
		}
	}

}

Merge Sort

public class MergeSort {

	private int[] vetor;

	public MergeSort(int[] veto){
		this.vetor = veto;
	}

	public void merge(int inicio, int fim) {
	        if (inicio < fim) {
	                int meio = (inicio + fim) / 2;
	                merge(inicio, meio);
	                merge(meio + 1, fim);
	                mesclar(inicio, meio, fim);
	        }
	}

	private void mesclar(int inicio, int meio, int fim) {
	        int tamanho = fim - inicio + 1;
	        int[] temp = new int[tamanho];
	        System.arraycopy(vetor, inicio, temp, 0, tamanho);

	        int i = 0;
	        int j = meio - inicio + 1;

	        for (int posicao = 0; posicao < tamanho; posicao++) {
	                if (j <= tamanho - 1) {
	                        if (i <= meio - inicio) {
	                                if (temp[i] < temp[j]) {
	                                        vetor[inicio + posicao] = temp[i++];
	                                } else {
	                                        vetor[inicio + posicao] = temp[j++];
	                                }
	                        } else {
	                                vetor[inicio + posicao] = temp[j++];
	                        }
	                } else {
	                        vetor[inicio + posicao] = temp[i++];
	                }
	        }
	}
}

Comb Sort

public class CombSort {

	private static void troca(int[] a, int i, int j) {
		int temp = a[i];
		a[i] = a[j];
		a[j] = temp;
	}

	private static int novoIntervalo(int intervalo) {
		intervalo =(int) (intervalo / 1.3);	
		if (intervalo < 1)
			intervalo = 1;
		return intervalo;
	}

	public static void combsort(int[] a) {
		int intervalo = a.length;
		for (;;) {
			intervalo = novoIntervalo(intervalo);
			boolean trocado = false;
			for (int i = 0; i < a.length - intervalo; i++) {
				if (a[i] > a[i + intervalo]) {
					troca(a, i, i + intervalo);
					trocado = true;
				}
			}
			if (intervalo == 1 && !trocado)
				break;
		}
	}

}

e o bubble Sort

public class Bolha {
	public static int[] ordenar(int[] numeros) {
		int x;
		boolean mudou = true;

		for (int i = 1; i < numeros.length; i++)  {
			for (int j = numeros.length - 1; j >= i; j--)  {
				if (numeros[j-1] > numeros[j]) {
					x = numeros[j-1];
					numeros[j-1] = numeros[j];
					numeros[j] = x;
					mudou = false;
				}
			}
			if (mudou == true)
				i = numeros.length+1;
			mudou = true;

		}
		return numeros;
	}
}