C语言结构体自定义排序

结构体自定义排序:

在最基础的C语言中,排序较为简单的有三种:冒泡,选择,插入。其中选择最劣。复杂一点的有快速排序和归并排序,在这里后两种我就不介绍了。

在使用结构体排序的时候,里面可能有许多不同的对应值。举个例子:

struct clever
{
    int x;
    int y;
}a[105];

有如上结构体,而我们需要以y为比较值来对结构体数组a进行排序。怎么办?

我们定义一个结构体中间变量就可以了,在这里我以冒泡为样例:

int n;//数组大小
    clever temp;
    for (int i = 0; i < n - 1; i++)
    {
        for (int j = 0; j < n - i - 1; j++)
        {
            if (a[i].y < a[i + 1].y)
            {
                temp = a[i];
                a[i] = a[i + 1];
                a[i + 1] = temp;
            }
        }
    }

有必要提一句,C语言和C++是互通的,在C++中有一个快速便捷的排序函数:sort

就算你是一个彻头彻尾的新手,学一下也能很好的使用它。我们只需要添加一点头文件即可。

#include<algorithm>
using namespace std;
struct clever
{
    int x;
    int y;
}a[105];
bool cmp(clever a,clever b)
{
    return a.y < b.y;//以y为比较参数呈升序排列
}
int main()
{
    int n;//数组大小
    sort(a,a+n,cmp);//cmp为bool类型,排序取决于函数内部设置,若无次参数,则自动以第一个系数为参数比较。
}

猜你喜欢

转载自blog.csdn.net/YZcheng_plus/article/details/128783017