如何在ASC和DESC模式下对C ++数组进行排序?

时间:2010-10-24 12:46:10

标签: c++ arrays sorting

我有这个数组:

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 ++中以asc / desc模式对数组进行排序?

5 个答案:

答案 0 :(得分:44)

要按升序对数组进行排序,请使用:

#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>());
}

HTH

答案 1 :(得分:2)

您可以将自定义比较函数传递给std::sort函数。

答案 2 :(得分:2)

首先,我希望您的数组分配在发布时只是一个错误,但所有数字都被分配到相同的内存位置。没有什么可以排序的。

之后,您可以使用sort()功能。链接的示例显示了使用它的简单方法。请注意,有一个未使用的参数将指定如何比较元素。默认情况下,如果您未指定参数,则使用“小于”,以便获得升序排序。更改此项以指定“大于”比较器以获得降序排序。

答案 3 :(得分:1)

通常,您可以在

中交换两个变量

http://www.cplusplus.com/reference/algorithm/sort/

更改

bool myfunction (int i,int j) { return (i<j); }

bool myfunction (int i,int j) { return (j<i); }

您可以将其重命名为其他内容,以便在结果需要升序或降序时使用两个比较函数。

如果函数体具有复杂的表达式并多次涉及ij,则更容易在参数列表中交换ij而不是身体中的每个ij

bool myfunction (int j,int i) { return (i<j); }

同样如此

http://www.cplusplus.com/reference/clibrary/cstdlib/qsort/

答案 4 :(得分:1)

#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;
}