elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Algoritmo de ordenamiento?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Algoritmo de ordenamiento?  (Leído 4,621 veces)
t4r0x

Desconectado Desconectado

Mensajes: 92



Ver Perfil
Algoritmo de ordenamiento?
« en: 11 Agosto 2013, 04:38 am »

Hola, quiero saber si alguien sabe algun algoritmo de ordenacion que pueda restaurar
el orden original de una cadena, por ejemplo tengo esta cadena:
"EDWKLAAQDFF"
El algoritmo la ordenara asi:
"AADDEFFKLQW"

De forma alfabetica, y que despues pueda restaurar a como este estaba
El algoritmo de burbuja pueda que funcione pero no encuentro una forma para
mantener la forma original de la cadena , asi que me preguntaba si existen algortimos
que trabajen asi y como se llaman para poder buscar informacion y poder programar uno. gracias!


En línea

za.asi

Desconectado Desconectado

Mensajes: 62


Ver Perfil
Re: Algoritmo de ordenamiento?
« Respuesta #1 en: 11 Agosto 2013, 11:53 am »

Podrias almacenar los canvios que hagas en el orden original en un vector para despues consultarlo y reordenar los caracteres


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Algoritmo de ordenamiento?
« Respuesta #2 en: 11 Agosto 2013, 13:11 pm »

pues a ver... tienes qSort en la stl... algoritmo de burbuja, por selección, por inserción, por mezcla, por cuentas, mediante arbol binario...

Opciones hay muchas... para más detalles de cada una mira por internet... explicar todos y cada uno de ellos puede llevar bastante tiempo.

En línea

Alien-Z

Desconectado Desconectado

Mensajes: 177


C++ Programmer


Ver Perfil
Re: Algoritmo de ordenamiento?
« Respuesta #3 en: 11 Agosto 2013, 16:38 pm »

Ten en cuenta que no todos los métodos que te ha comentado eferion sirven para lo mismo, es decir, ¿podrías usar cualquiera de esos algoritmos para ordenar tu cadena? SI; ¿Es igual de eficiente? NO, cada uno sirve para un caso distinto; deberías leer al menos una descripción para saber cuál utilizar en cada aplicación.
En línea

t4r0x

Desconectado Desconectado

Mensajes: 92



Ver Perfil
Re: Algoritmo de ordenamiento?
« Respuesta #4 en: 12 Agosto 2013, 03:11 am »

Bueno si conozco los algoritmos basicos como el de burbuja , esos algoritmos estan
bien y ordenan como yo quiero pero mi problema principal es que quiero saber
una manera al menos un poco eficiente de saber como restaurar estas cadenas
a su forma original, y en realidad no se de que forma buscar en internet, por
algoritmos de ordenacion encuentro bastantes pero ninguno habla de restaurar
el estado original ese tipo de informacion necesito gracias
En línea

crksergio

Desconectado Desconectado

Mensajes: 42


Ðevastador


Ver Perfil WWW
Re: Algoritmo de ordenamiento?
« Respuesta #5 en: 12 Agosto 2013, 08:29 am »

Si quieres volverlas a su forma original, por qué no guardar las ordenadas en un nuevo arreglo, así las originales quedan intactas?
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Algoritmo de ordenamiento?
« Respuesta #6 en: 12 Agosto 2013, 15:25 pm »

¿A qué te refieres con forma original? Un algoritmo de ordenamiento básico, como el "Burbuja", ordenaría eso eficientemente. Porque, te refieres a ordenar las letras de "mayor a menor" ¿no?
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Algoritmo de ordenamiento?
« Respuesta #7 en: 12 Agosto 2013, 17:17 pm »

conozco los algoritmos basicos como el de burbuja , esos algoritmos estan bien y ordenan como yo quiero pero mi problema principal es que quiero saber una manera al menos un poco eficiente de saber como restaurar estas cadenas a su forma original
Lo primero que debes indicar es el lenguaje de programación que estas utilizando. Y, como ya te comentaron, los algoritmos de ordenacion solo hacen eso: ordenan.

Para realizar la operación que mencionas debes utilizar (en el caso de C) un array adicional. Este lo utilizas para almacenar los indices de (o también punteros a) cada uno de los elementos del array de valores.

Es el array de indices (o punteros) el que se ordena. Después si quieres acceder a los valores en orden accedes a ellos indirectamente mediante el array de soporte (indices o punteros).

Por ejemplo supongamos que el array de valores es:
Código:
V[0] == C
V[1] == B
V[2] == A
V[3] == E
V[4] == D

El array de indices lo inicializas con el indice del primer elemento, segundo, etc., de esta forma:
Código:
NDX[0] == 0
NDX[1] == 1
NDX[2] == 2
NDX[3] == 3
NDX[4] == 4

Y una vez ordenado el array de indices este termina así:
Código:
NDX[0] == 2
NDX[1] == 1
NDX[2] == 0
NDX[3] == 4
NDX[4] == 3
Indicando que, para imprimir en orden el array de valores, se deben imprimir los elementos con indices 2, 1, 0, 4 y 3. Un programa de ejemplo:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(void)
  5. {
  6.   char v[5]  = {'C', 'B', 'A', 'E', 'D'};
  7.   int ndx[5] = {0, 1, 2, 3, 4};
  8.   int i;
  9.   int j;
  10.   int aux;
  11.  
  12.   /* Ordenacion de los indices mediante BubbleSort */
  13.   for (i = 4; i > 0; i--)
  14.      for (j = 0; j < i; j++)
  15.         if (v[ndx[j]] > v[ndx[j + 1]]){
  16.            aux = ndx[j];
  17.            ndx[j] = ndx[j + 1];
  18.            ndx[j + 1] = aux;
  19.         }
  20.  
  21.   /* Valores segun su posicion */
  22.   for (i = 0; i < 5; i++)
  23.      printf("%3c", v[i]);
  24.   putchar('\n');
  25.  
  26.   /* Valores segun el orden indicado por el array de indices */
  27.   for (i = 0; i < 5; i++)
  28.      printf("%3c", v[ndx[i]]);
  29.   putchar('\n');
  30.  
  31.   return EXIT_SUCCESS;
  32. }

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Algoritmo de ordenamiento?
« Respuesta #8 en: 12 Agosto 2013, 22:46 pm »

Bueno si conozco los algoritmos basicos como el de burbuja , esos algoritmos estan
bien y ordenan como yo quiero pero mi problema principal es que quiero saber
una manera al menos un poco eficiente de saber como restaurar estas cadenas
a su forma original, y en realidad no se de que forma buscar en internet, por
algoritmos de ordenacion encuentro bastantes pero ninguno habla de restaurar
el estado original ese tipo de informacion necesito gracias


A no ser que guardes el original o mapees los resultados ( es decir, que guardes la posición que tenía cada cadena en su posición original ) te va a ser imposible restaurar la información.

Tu imagínate que tiras 6 dados... después los ordenas de menor a mayor... se te ocurre alguna forma humanamente posible de, viendo la secuencia ordenada, deducir la posición original de cada uno ?? no, verdad ?? pues eso.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
algoritmo de ordenamiento¿como los uno en un menu principal?
Programación C/C++
chaarlyyyy 2 3,876 Último mensaje 26 Mayo 2010, 23:13 pm
por @synthesize
No entiendo algoritmo de ordenamiento « 1 2 »
Programación C/C++
JuszR 14 7,542 Último mensaje 3 Noviembre 2010, 14:16 pm
por flony
Duda Algoritmo de Ordenamiento
Programación General
kernel19 4 3,701 Último mensaje 27 Diciembre 2010, 16:54 pm
por BgCRaCK
dime el algoritmo que más te gusta... ejm:algoritmo del avestruz
Programación General
jhonatanAsm 0 4,767 Último mensaje 13 Mayo 2011, 01:30 am
por jhonatanAsm
algoritmo de ordenamiento radix sort en java
Java
+ 1 Oculto(s) 1 5,623 Último mensaje 13 Junio 2016, 15:39 pm
por AlbertoBSD
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines