Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Bleach@lex en 2 Diciembre 2009, 05:09 am



Título: algoritmo radix sort en java
Publicado por: Bleach@lex en 2 Diciembre 2009, 05:09 am
hola me gustaria saver si me pueden ayudar con el algoritmo de radix sort
estuve buskndo y hasta aurita no he encotrado un algoritmo que me ayude entderlo mejor para asi poder pasarlo a codigo   ::)


Título: Re: algoritmo radix sort en java
Publicado por: Leyer en 2 Diciembre 2009, 05:29 am
solo funcion con positivos

Código
  1. import java.lang.*;
  2. import java.io.*;
  3.  
  4. public class RadixSort{
  5.  
  6.    public static void radixSort(int[] arr){
  7.        if(arr.length == 0)
  8.            return;
  9.        int[][] np = new int[arr.length][2];
  10.        int[] q = new int[0x100];
  11.        int i,j,k,l,f = 0;
  12.        for(k=0;k<4;k++){
  13.            for(i=0;i<(np.length-1);i++)
  14.                np[i][1] = i+1;
  15.            np[i][1] = -1;
  16.            for(i=0;i<q.length;i++)
  17.                q[i] = -1;
  18.            for(f=i=0;i<arr.length;i++){
  19.                j = ((0xFF<<(k<<3))&arr[i])>>(k<<3);
  20.                if(q[j] == -1)
  21.                    l = q[j] = f;
  22.                else{
  23.                    l = q[j];
  24.                    while(np[l][1] != -1)
  25.                        l = np[l][1];
  26.                    np[l][1] = f;
  27.                    l = np[l][1];
  28.                }
  29.                f = np[f][1];
  30.                np[l][0] = arr[i];
  31.                np[l][1] = -1;
  32.            }
  33.            for(l=q[i=j=0];i<0x100;i++)
  34.                for(l=q[i];l!=-1;l=np[l][1])
  35.                        arr[j++] = np[l][0];
  36.        }
  37.    }
  38.  
  39.    public static void main(String[] args){
  40.        int i;
  41.        int[] arr = new int[15];
  42.        System.out.print("original: ");
  43.        for(i=0;i<arr.length;i++){
  44.            arr[i] = (int)(Math.random() * 1024);
  45.            System.out.print(arr[i] + " ");
  46.        }
  47.        radixSort(arr);
  48.        System.out.print("\nsorted: ");
  49.        for(i=0;i<arr.length;i++)
  50.            System.out.print(arr[i] + " ");
  51.        System.out.println("\nDone ;-)");
  52.    }
  53. }


Título: Re: algoritmo radix sort en java
Publicado por: Bleach@lex en 2 Diciembre 2009, 06:41 am
ok gracias por el codigo ::)