6

#PlatziCodingChallenge - Ordenar una lista de números de mayor a menor

Demian
demian
48320

17. ¿Cómo puedo ordenar una lista de números de mayor a menor?

El próximo reto será que ordenes una lista de 10 números aleatorios de mayor a menor y viceversa.

Reglas del reto

Escribe tu comentario
+ 2
Ordenar por:
3
13595Puntos

Se que JS ya trae la función de sort(), pero aproveche para repasar el quicksort, aqui esta mi solución.

function reverseQuickSort(array){
	let sortedArray = quickSort(array, 0, array.length -1);
	console.log(sortedArray.reverse());
}

function quickSort(array, left, right){
    if(left < right){
        index = quickSortPartition(array, left, right);       
        quickSort(array, left, index-1);
        quickSort(array, index + 1, right);
    }
}

function quickSortPartition(array, left, right){
    let pivot = array[right];
    let i = left;

    for (let j = left; j < array.length; j++) {
        if (array[j] < pivot) {
            swap(array, i, j);
            i++;
        }        
    }
    swap(array, i, right);

    return i;
}

function swap(array, numA, numB) {
    let aux = array[numA];
    array[numA] = array[numB];
    array[numB] = aux;
 }```
2
19943Puntos

Ordenar una lista de números en JavaScript y en Python:

//Ordenar una lista de números de mayor a menor en javaScript//Funcion para ordenar una lista de números de mayor a menorfunctionsortHL(numbers) {
    numbers.sort((a, b) => b - a)
    return numbers
}

//Pedido de datosconst cantidad = parseInt(prompt('¿Cuántos números quiere ordenar de mayor a menor?'))
const numeros = []
for (let i = 0; i < cantidad; i++) {
    numeros.push(parseFloat(prompt(`Introduzca el número (${i+1}/${cantidad})`)));
}

//Impresion de resultado
alert(`Números ordenados: ${numeros}`)
#Ordenar una lista de números de mayor a menor en javaScript#Funcion para ordenar una lista de números de mayor a menordefsortHL(numbers):
    numbers.sort(reverse=True)
    return numbers

#Pedido de datos
cantidad = int(input('¿Cuántos números quiere ordenar de mayor a menor?: '))
numeros = []
for i in range(0, cantidad):
    numeros.append(float(input('Introduzca el número ({}/{}): '.format(i+1, cantidad))))

#Impresion de resultado
print('Números ordenados: {}'.format(sortHL(numeros)))
1

Para n numeros

Javascript

constn = prompt('Cuantos numeros quieres en tu lista?')
var lista = []
var magicNumber = 10

    for(i = 0; i < n; i++) {
        lista.push(Math.floor(Math.random() * magicNumber))
    }
    alert(`Tu lista de${n}: 
    ${lista.sort(function (a, b){
    return a - b;
    })}`)```
1
7078Puntos
#include <iostream>

using namespace std;int main()
{
    cout << "PROGRAMA ORDENADOR DE NUMEROS" << endl;int numero_ordenar;
    cout << "Ingrese la cantidad de numeros que desea ordenar: ";
    cin >> numero_ordenar;int vector_numeros[numero_ordenar], k = 1, j;for(int i = 0; i < numero_ordenar; i++)
    {
        cout << "Ingrese numero: ";
        cin >> j;
        vector_numeros[i] = j;
        k++;
    }

    int x, y;for(int i = 0; i < numero_ordenar; i++)
    {
        for(j = i + 1; j < numero_ordenar; j++)
        {
            x = vector_numeros[i] - vector_numeros[j];if(x < 0)
            {
                y = vector_numeros[j];
                vector_numeros[j] = vector_numeros[i];
                vector_numeros[i] = y;
            }
        }
    }
    cout << "Bien. Ahora sus numeros estarian ordenados de esta forma: " << endl;for(int i = 0; i < numero_ordenar; i++)
    {
        cout << " " << vector_numeros[i];
    }
    return0;
}
1
2345Puntos

**Ordenar lista números aleatorios **
En Javascript:

var cantidad = 10; //digite la cantidad de num aleatorios a ordenarvar orden = ASC; // Defina orden. Ascendente = ASC o Descendente = DESCvar arrNum = [];

//Numeros aleatoriosfor(let i = 0; i < cantidad; i++){
    arrNum[i] = Math.round(Math.random()*(100-1)+parseInt(1))
}

//llamamos funcion ordenamiento y pasamos tipo de ordenconsole.log(ordenarNumAleatorios(orden))

functionASC(arr){
    for (let i = 0; i < arr.length; i++){
      for (let j = 0; j < (arr.length - 1) - i; j++){
        if (arr[j] > arr[j + 1]){
            let temp = arr[j];
            arr[j] = arr[j +1]
            arr[j +1]= temp
        }
      }
    }
    return arr;
  };

  functionDESC(arr){
      return ASC(arr).reverse();
  }

  functionordenarNumAleatorios(callback){
      return callback(arrNum);
  }

Resultado:
Cantidad = 10;
Orden = ASC;
6, 9, 20, 22, 29, 44, 62, 64, 64, 74

Cantidad = 10;
Orden = DESC;
88, 87, 83, 72, 71, 41, 37, 15, 8, 3

1
2345Puntos
7 meses

olvide comentarles que restringí los números aleatorios a que sean de 1 a 100, para este ejemplo.

1
26494Puntos

Python con Insertion sort. 🐍🐍🐍

defordenar_ascendente(lista_numeros, orden):for i in range(1, len(lista_numeros)):
        valor_actual = lista_numeros[i]
        posicion_actual = i

        if orden == 'asc':
            while posicion_actual > 0and lista_numeros[posicion_actual - 1] > valor_actual:
                lista_numeros[posicion_actual] = lista_numeros[posicion_actual - 1]   
                posicion_actual -= 1elif orden == 'dsc':
            while posicion_actual > 0and lista_numeros[posicion_actual - 1] < valor_actual:
                lista_numeros[posicion_actual] = lista_numeros[posicion_actual - 1]   
                posicion_actual -= 1

        lista_numeros[posicion_actual] = valor_actual
    
    return lista_numeros
        
defobtener_numeros():
    print('Inserta los números a ordenar. Inserta X para terminar de insertar.\n')
    lista = []
    num = 0while num != 'x':
        num = input('Número: ')
        num = num.lower()
        if num != 'x':
            num = float(num)
            lista.append(num)  


    print(f'\nLista de números: {lista}')
    return lista      


if __name__ == "__main__":
    print('''ORDENA TUS NUMEROS''')
    lista = obtener_numeros()
    orden = input('\n¿Cómo quieres ordenar los números? asc/dsc: ')
    orden = orden.lower()
    lista_ordenada = ordenar_ascendente(lista, orden)
    print(f'\nLista ordenada: {lista_ordenada}')


<code>

1

Utilizando las funciones de sorted Python

import random
lista=[]
foriin range(10):
    numero_aleatorio=random.randint(0,10000)
    lista.append(numero_aleatorio)
print(lista)
ordenado=sorted(lista)
ordenadodes=sorted(lista, reverse=True)
print(ordenado)print(ordenadodes)```
1
6327Puntos

Ordenar una lista en Java ☕️ ☕️ 😃

publicclass OrdenarLista {
    publicstaticvoid main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("Ingresa el tamaño de la lista ");
        int elements = scanner.nextInt();
        Integer[] array = new Integer[elements];

        for (int i = 0; i < array.length; i++) {
            array[i] = scanner.nextInt();
        }
        //Ordenar de menor a mayor
        Arrays.sort(array);
        System.out.println(Arrays.toString(array));
        //Ordenar de mayor a menor
        Arrays.sort(array, Collections.reverseOrder());
        System.out.println(Arrays.toString(array));
    }
}

Resultado del programa

1

En Python:

""" Programa que ordena una lista de 10 números aleatorios de mayor a menor y viceversa.
Program that orders a list of 10 random numbers from largest to smallest and vice versa. """

import random

if __name__ == "__main__":
    input('Enter any key to generate a list of 10 random numbers: ')
    random_list = []
    for i inrange(0, 10):
        random_number = random.randint(0, 100)
        random_list.append(random_number)
    print('Your random list: {}' .format(random_list))
    print('Your listin ascending order: {}' .format(sorted(random_list)))
    print('Your listin descending order: {}' .format(sorted(random_list, reverse=1)))
1
8870Puntos

Java

public class Main {
    public static void main(String[] args) {
        generarArreglo();
    }
    public static void generarArreglo(){
        int [] numeros= new int[10];for (int i=0;i<numeros.length;i++) {
            numeros[i]=(int)(Math.random()*100);
        }
        System.out.println("Numeros del arreglo");for (int elemento: numeros) {
            System.out.println(elemento);
        }
        mayoraMenor(numeros);
        menoraMayor(numeros);
    }
    public static void mayoraMenor(int [] numeros){
        for(int j=0;j<100;j++) {for (int i = 0; i < numeros.length; i++) {if (i > 0) {
                    if (numeros[i] > numeros[i - 1]) {
                        int comodin = numeros[i];
                        numeros[i] = numeros[i - 1];
                        numeros[i - 1] = comodin;
                    }
                }
            }
        }
        System.out.println("Numeros acomodados de mayor a menor");for (int elemento:numeros) {
            System.out.println(elemento);
        }
    }
    public static void menoraMayor(int [] numeros){
        for(int j=0;j<100;j++) {for (int i = 0; i < numeros.length; i++) {if (i > 0) {
                    if (numeros[i] < numeros[i - 1]) {
                        int comodin = numeros[i];
                        numeros[i] = numeros[i - 1];
                        numeros[i - 1] = comodin;
                    }
                }
            }
        }
        System.out.println("Numeros acomodados de menor a mayor");for (int elemento:numeros) {
            System.out.println(elemento);
        }
    }
}
1
7330Puntos
import random

tamanoLista = int(input('de que tamaño quieres la lista? '))
array = [random.randint(0,100) for i in range(tamanoLista)]

arrayOrg = sorted(array)
arrayOrg.reverse()

print(arrayOrg)
1
7689Puntos

Resuelto

<!DOCTYPE html><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width, initial-scale=1.0"><title>Lista de mayor a menor y viceversa</title></head><style>
  * {
    margin: 0;
  }

  .contenedor {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100vh;
  }

  .section {
    padding: 0.25rem2rem;
  }

  .inputs {
    display: inherit;
    align-items: center;
    padding: 2rem;
  }

  .btn {
    font-size: 36px;
    border: 2px solid black;
    border-radius: 6px;
    cursor: pointer;
  }

  #contra {
    padding: 020px;
    width: 95%;
  }
</style><body><divclass="contenedor"><h1style="margin-bottom: 24px;">Presiona el boton "Click" para mostrar una lista, y luego su ordenada ascendente y viceversa</h1><buttononclick="escribe()"class="btn">Click</button><divstyle="margin-top: 24px;"id="lista"></div><divstyle="margin-top: 24px;"id="listaAsc"></div><divstyle="margin-top: 24px;"id="listaDesc"></div></div><script>functionescribe() {
      const lista = document.getElementById('lista')
      const listaAsc = document.getElementById('listaAsc')
      const listaDesc = document.getElementById('listaDesc')

      const list = []
      for (let i = 0; i < 10; i++){
        list.push(Math.round(Math.random()*1000))
      }
      lista.innerHTML = `Lista al azar: ${list}` 
      list.sort((a,b) => a - b)
      listaAsc.innerHTML = `Lista Ascendente: ${list}`
      list.sort((a,b) => b - a)
      listaDesc.innerHTML = `Lista Descendente: ${list}`
      
    }
  </script></body></html>
1
18961Puntos
constrandom = () => {
    const LIMIT = 10;
    let allNumbers = [];for (let i = 0; i < LIMIT; i++) {
        allNumbers.push(Math.floor(Math.random() * 100));
    }
    return allNumbers
}

const positiveNumbers = n => n.sort((a, b)=> a - b);
console.log(positiveNumbers(random()));const negativeNumbers = n => n.sort((a, b) => b - a);
console.log(negativeNumbers(random()))
1
18961Puntos
5 meses

Me acabo de dar cuenta que en vez de poner números de mayor a menor y viceversa, puse números negativos y positivos 😄

0
12398Puntos

En Python:

import random

defordena_numeros(lista_numeros):
  lista_numeros.sort()
  return lista_numeros

if __name__ == "__main__":
  lista_numeros =  [random.randint(0,100) for x in range(10)]
  print(lista_numeros)
  
  lista_ordenada = ordena_numeros(lista_numeros)
  print(lista_ordenada)```