¿Cómo ordenar los dígitos enteros en orden ascendente sin cadenas ni matrices?

klayveR:

Estoy tratando de ordenar los dígitos de un número entero de cualquier longitud en orden ascendente sin usar cadenas, matrices o recursividad.

Ejemplo:

Input: 451467
Output: 144567

Ya he descubierto cómo obtener cada dígito del entero con división de módulo:

int number = 4214;

while (number > 0) {
    IO.println(number % 10);
    number = number / 10;
}

pero no sé cómo ordenar los dígitos sin una matriz.

No te preocupes por la IOclase; Es una clase personalizada que nuestro profesor nos dio.

Timofey:

En realidad, hay un algoritmo muy simple que usa solo enteros :

int number = 4214173;
int sorted = 0;
int digits = 10;
int sortedDigits = 1;
boolean first = true;

while (number > 0) {
    int digit = number % 10;

    if (!first) {

        int tmp = sorted;
        int toDivide = 1;
        for (int i = 0; i < sortedDigits; i++) {
            int tmpDigit = tmp % 10;
            if (digit >= tmpDigit) {
                sorted = sorted/toDivide*toDivide*10 + digit*toDivide + sorted % toDivide;
                break;
            } else if (i == sortedDigits-1) {
                sorted = digit * digits + sorted;
            }
            tmp /= 10;
            toDivide *= 10;
        }
        digits *= 10;
        sortedDigits += 1;
    } else {
        sorted = digit;
    }

    first = false;
    number = number / 10;
}
System.out.println(sorted);

se imprimirá 1123447. La idea es simple:

  1. toma el dígito actual del número que desea ordenar (llamémoslo N)
  2. pasas por todos los dígitos en un número ya ordenado (llamémoslo S)
  3. si el dígito actual en S es menor que el dígito actual en N, simplemente inserte el dígito en la posición actual en S. De lo contrario, simplemente vaya al siguiente dígito en S.

Esa versión del algoritmo puede ordenar tanto en orden asc in desc, solo tiene que cambiar la condición.

Además, le sugiero que eche un vistazo a la llamada clasificación de radix , la solución aquí toma algunas ideas de la clasificación de radix, y creo que la clasificación de radix es el caso general de esa solución.

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

Cómo comparar los dígitos de 2 números enteros en c (sin matrices ni cadenas)

Cómo ordenar cadenas que contienen nombres de días de la semana en orden ascendente

Ordenar los valores de un diccionario en orden ascendente por sus 4 últimos dígitos

Emitir ordenar los valores en orden ascendente

Cómo ordenar una lista de matrices de objetos en orden ascendente

¿Cómo ordenar los nombres de los archivos en orden ascendente?

ordenar en orden ascendente

¿Cómo ordenar números en orden ascendente sin usar una matriz?

Ordenar nombres en orden ascendente en matrices en una matriz

Ordenar nombres en orden ascendente en matrices en una matriz

Cómo Ordenar un array de enteros en orden ascendente y descendente utilizando lambda sólo en java

Cómo ordenar una matriz por tipo de elemento donde las cadenas deben aparecer en primer lugar, luego los números flotantes y enteros manteniendo la misma prioridad de tipo y sin usar matrices adicionales

Ordenar matriz de días en orden ascendente

Ordenar una lista de cadenas numéricas en orden ascendente

Ordenar una lista de cadenas numéricas en orden ascendente

¿Cómo ordenar los valores múltiples del diccionario en orden ascendente?

¿Cómo ordenar mi lista de los 3-mers más frecuentes en orden ascendente?

¿Cómo ordenar mi lista de los 3-mers más frecuentes en orden ascendente?

Escriba un programa que devuelva enteros correspondientes a los números utilizados para formar la cadena mezclada. Los enteros se deben ordenar en orden ascendente

Cómo ordenar ArrayList <Object> en orden ascendente android

¿Cómo ordenar las claves de Firebase en orden ascendente?

Cómo ordenar una matriz en orden ascendente swift 2.3

Cómo ordenar las promesas en su orden resuelto sin importar el orden en los argumentos

¿Cómo ordenar una matriz 2D genérica en orden ascendente?

Cómo ordenar la matriz 2D según la columna (orden ascendente) en java

Cómo almacenar los índices originales de la matriz después de ordenar la matriz en orden ascendente

Ordenar una lista vinculada en orden ascendente en C

Ordenar una lista vinculada en orden ascendente en C

Ordenar una matriz en orden ascendente usando punteros en C

TOP Lista

CalienteEtiquetas

Archivo