🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.ms-windows.programacion
Article #39

Re: ORDENAR SIN ORDENAR

#39
From: Guillermo Rodriguez Garcia
Date: Mon, 11 Jan 1999 00:00
51 lines
3634 bytes
El d�a Sun, 10 Jan 1999 02:01:42 +0100, JOSEP LARDIEZ YEGOLA
<xxxjly@redestb.es> escribi�:

>Estoy realizando un programa de clasificaci�n de elementos y deseo
>ordenarlos sin tener que usar un algoritmo de ordenaci�n cl�sico sino
>por c�lculo. Conozco el intervalo de valores que va de 0 a 2.000.000.
>Tengo como m�ximo 6000 elementos diferentes. Conozco los valores de los
>elementos dentro del intervalo. Luego parece f�cil, divido el valor del
>elemento por una constante (2000000/6000) y obtengo un valor entre 1 y
>6000. Pero existe un problema:

Eso que est�s haciendo no es otra cosa que una tabla hash, si no me
equivoco.

>        -Como debo tomar el valor entero del resultado, cuando varios
>elementos est�n muy juntos, este resultado tomar� valores id�nticos,
>aunque var�e su valor absoluto.

Y lo que acabas de describir es precisamente el problema de las
colisiones en una tabla hash.

>�C�mo podr�a realizar este proceso sin
>tener que recurrir a un algoritmo de ordenaci�n cl�sico tipo burbuja,
>etc?

Una posibilidad ser�a usar ese m�todo que describes para clasificar
los elementos en una serie de "clases", determinadas por ese valor
entero entre 1 y 6000 que t� est�s calculando, y luego aplicar un
algoritmo de ordenaci�n a cada una de las clases en las que haya m�s
de un elemento. Otro tema muy distinto es c�mo hacer eso de forma
eficiente.

Creo que te trae m�s cuenta utilizar directamente un algoritmo de
ordenaci�n, aunque teniendo en cuenta el n�mero de elementos, yo
usar�a quicksort, shellsort o similares, antes que uno tipo burbuja.

>Un sistema podr�a ser el recalcular los valores para distribuirlos
>uniformemente y luego aplicar el algoritmo anterior, pero hay que
>recordar que s�lo conozco los valores de los elementos y el n�mero de
>ellos pero no los tengo ordenados para realizar operaciones del estilo
>de hallar diferencias y recalcular valores.

Para redistribuir uniformemente los valores deber�as conocer antes su
distribuci�n previa, pero claro, calcular la funci�n distribuci�n y
redistribuir los valores uniformemente te va a salir
computacionalmente m�s complejo que ordenarlos directamente.

Salu2: GUILLE
----
Guillermo Rodriguez Garcia
<XXguille@XXiies.XXes>  (ya sabes :-)
Technical Details
Message-ID: <369a2f96.2841561@noticias.iies.es>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <3697FBF6.1AD8@redestb.es>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: 1053fc,7ffaef3fcc6303e
X-Google-Attributes: gid1053fc,public
X-Google-Thread: 106e2f,7ffaef3fcc6303e
X-Google-Attributes: gid106e2f,public
X-Google-Thread: 10d53b,7ffaef3fcc6303e
X-Google-Attributes: gid10d53b,public
X-Google-Thread: f4c60,7ffaef3fcc6303e
X-Google-Attributes: gidf4c60,public
X-Google-Thread: 10d088,7ffaef3fcc6303e
X-Google-Attributes: gid10d088,public
X-Google-Thread: 10f58f,7ffaef3fcc6303e
X-Google-Attributes: gid10f58f,public
X-Google-Thread: f53ec,7ffaef3fcc6303e
X-Google-Attributes: gidf53ec,public
X-Google-Thread: 109585,7ffaef3fcc6303e
X-Google-Attributes: gid109585,public
From: XXguille@XXiies.XXes (Guillermo Rodriguez Garcia)
Subject: Re: ORDENAR SIN ORDENAR
Date: 1999/01/11
Message-ID: <369a2f96.2841561@noticias.iies.es>
X-Deja-AN: 431582465
Content-Transfer-Encoding: 8bit
References: <3697FBF6.1AD8@redestb.es>
Content-Type: text/plain; charset=ISO-8859-1
Organization: Telefonica Transmision de Datos
Mime-Version: 1.0
Newsgroups: es.comp.os.ms-windows.programacion,es.comp.programas,es.comp.lenguajes.c,es.comp.lenguajes.c++,es.comp.lenguajes.delphi,es.comp.lenguajes.visual-basic,es.comp.bd.misc,es.comp.misc,es.comp.lenguajes.clipper,es.comp.lenguajes.misc