Как отсортировать массив С++ в режиме ASC и DESC?
У меня есть этот массив:
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;
как отсортировать массив в режиме asc/desc в С++?
Ответы
Ответ 1
Чтобы отсортировать массив по возрастанию, используйте:
#include <algorithm>
int main()
{
//...
std::sort(array, array+n); //where n is the number of elements you want to sort
}
Чтобы отсортировать его по убыванию, используйте
#include <algorithm>
#include <functional>
int main()
{
//...
std::sort(array, array+n, std::greater<int>());
}
НТН
Ответ 2
Вы можете передать пользовательский функтор сравнения в std:: sort.
Ответ 3
Ну, сначала я надеюсь, что ваше назначение массива было просто ошибкой при публикации, но все ваши номера назначены в одно и то же место памяти. Там нечего сортировать.
После этого вы можете использовать функцию sort(). Приведенный пример показывает простой способ его использования. Обратите внимание, что существует третий параметр, который не используется, который будет определять, как сравнивать элементы. По умолчанию, если вы не укажете параметр, он использует "меньше", чтобы получить сортировку по возрастанию. Измените это, чтобы указать компаратор "больше, чем", чтобы получить сортировку по убыванию.
Ответ 4
Как правило, вы можете просто заменить две переменные в
http://www.cplusplus.com/reference/algorithm/sort/
Измените
bool myfunction (int i,int j) { return (i<j); }
to
bool myfunction (int i,int j) { return (j<i); }
вы можете переименовать его в другое, чтобы у вас есть две функции сравнения, которые должны использоваться, когда результат должен быть восходящим или нисходящим.
Если тело функции имеет сложные выражения и включает в себя i
и j
несколько раз, тогда проще заменить i
и j
в списке параметров вместо каждых i
и j
в теле:
bool myfunction (int j,int i) { return (i<j); }
То же самое касается
http://www.cplusplus.com/reference/clibrary/cstdlib/qsort/
Ответ 5
#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;
}