numeros - ¿Cómo ordenar la matriz de C++ en modo ASC y DESC?
ordenar un vector de forma descendente en c++ (5)
Tengo esta matriz:
array[0] = 18;
array[1] = -10;
array[2] = 2;
array[3] = 4;
array[4] = 6;
array[5] = -12;
array[6] = -8;
array[7] = -6;
array[8] = 4;
array[9] = 13;
¿cómo puedo ordenar la matriz en modo asc / desc en C ++?
Bueno, primero espero que la asignación de matriz sea solo un error al publicar, pero todos sus números se asignan a la misma ubicación de memoria. No hay nada para ordenar.
Después de eso, puede usar la función sort () . El ejemplo vinculado muestra un método fácil para usarlo. Tenga en cuenta que hay un tercer parámetro que no se usa que especificará cómo comparar los elementos. Por defecto, si no especifica el parámetro, usa ''menos que'' para que obtenga una ordenación de orden ascendente. Cambie esto para especificar el comparador "mayor que" para obtener una clasificación de orden descendente.
En general, puedes intercambiar las dos variables en
http://www.cplusplus.com/reference/algorithm/sort/
Cambio
bool myfunction (int i,int j) { return (i<j); }
a
bool myfunction (int i,int j) { return (j<i); }
puede cambiarle el nombre a otra cosa para que tenga dos funciones de comparación para usar cuando el resultado deba ser ascendente o descendente.
Si el cuerpo de la función tiene expresiones complicadas e involucra a i
y j
varias veces, entonces es más fácil cambiar el i
y el j
en la lista de parámetros en lugar de cada i
y j
en el cuerpo:
bool myfunction (int j,int i) { return (i<j); }
Lo mismo va para
Para ordenar una matriz en ascendente, use:
#include <algorithm>
int main()
{
//...
std::sort(array, array+n); //where n is the number of elements you want to sort
}
Para clasificarlo en descendente, use
#include <algorithm>
#include <functional>
int main()
{
//...
std::sort(array, array+n, std::greater<int>());
}
HTH
Puede pasar el functor de comparación personalizado a la función std :: sort .
#include <iostream>
#include <stdlib.h>
using namespace std;
int main (int argc, char *argv[])
{
int num[10]={18,-10,2,4,6,-12,-8,-6,13,-1};
int temp;
cout << "Ascending Sort : /n/n";
for(int i=0; i<=10; i++)
{
for(int j=i+1; j<=10; j++)
{
if(num[i]>num[j])
{
temp=num[i];
num[i]=num[j];
num[j]=temp;
}
}
cout << num[i] << "/n";
}
cout << "/nDescending Sort : /n/n";
for(int i=0; i<=10; i++)
{
for(int j=i+1; j<=10; j++)
{
if(num[i]<num[j])
{
temp=num[j];
num[j]=num[i];
num[i]=temp;
}
}
cout << num[i] << "/n";
}
return 0;
}