sort排序的简单例子

本文介绍了一种基于特定条件对路径进行排序的算法实现。通过比较路径的长度、通行时间、修建费用、车流容量及当前车流量等五个属性,确保了路径排序的精确性和实用性。适用于交通规划等领域。

给你个正整数n。表示路径的个数。
接下来n行每行有7个非负整数依次表示第i条路径的:
端点u,端点v,长度l,通行所需时间t,修建该路所需费用w,车流最大容量c,当前车流量f。
对其进行排序。
我们认为长度越小的路径,rank越小。
当长度相同时,通行所需时间越小的路径,rank越小。
当通行所需时间相同时,修建该路所需费用越小的路径,rank越小。
当修建该路所需费用相同时,车流最大容量越小的路径,rank越小。
当车流最大容量相同时,当前车流量越小的路径,rank越小。
不可能有以上5个参数均相同的数据。

接下来有一个正整数m表示询问的个数。
接下来m行每行有一个正整数x。
对于每一个询问x,输出rnk值为x的边的7个属性。

Sample Input:
3
1 2 5 6 5 5 5
2 3 5 5 5 5 5
3 1 6 5 5 5 5
3
1
2
3

Sample Output:
2 3 5 5 5 5 5
1 2 5 6 5 5 5
3 1 6 5 5 5 5

Hint:
对于80%的数据,1 <= n, m <=1000
对于100%的数据,1 <= n, m <=1000000; 1 <= x <= n; 1 <= u, v, l, t, w, c, f <= 1000000000;



#include<stdio.h>
#include<iostream>
#include<algorithm>  
using namespace std;
struct Road
{
    int u;
    int v;
    int l;
    int t;
    int w;
    int c;
    int f;
};
Road road[10000];
bool cmp(const Road &r1,const Road &r2)
{
    if(r1.l!=r2.l)
     return r1.l<r2.l;
     else if(r1.t!=r2.t)
      return r1.t<r2.t;
      else if(r1.w!=r2.w)
       return r1.w<r2.w;
       else if(r1.c!=r2.c)
        return r1.c<r2.c;
        else
          return r1.f<r2.f;
}
int main()
{
    int num,n;
    scanf("%d",&num);
    for(int i=0;i<num;i++)
    scanf("%d %d %d %d %d %d %d",&road[i].v,&road[i].u,&road[i].l,&road[i].t,&road[i].w,&road[i].c,&road[i].f);
    sort(road,road+num,cmp);
    scanf("%d",&num);
    for(int i=0;i<num;i++)
    {
        scanf("%d",&n);
        n--;
        printf("%d %d %d %d %d %d %d\n",road[n].v,road[n].u,road[n].l,road[n].t,road[n].w,road[n].c,road[n].f);
    }
    return 0;
}


在C++中,`sort` 函数是标准库 `<algorithm>` 提供的一个非常有用的排序算法。它可以用来对数组或容器中的元素进行排序。下面是一个简单例子,展示如何使用 `sort` 函数来对一个整数数组进行排序: ```cpp #include <iostream> #include <algorithm> // 包含 sort 函数的头文件 int main() { // 定义一个整数数组 int arr[] = {5, 2, 9, 1, 5, 6}; // 计算数组的长度 int n = sizeof(arr) / sizeof(arr[0]); // 使用 sort 函数对数组进行排序 std::sort(arr, arr + n); // 输出排序后的数组 std::cout << "排序后的数组: "; for (int i = 0; i < n; i++) { std::cout << arr[i] << " "; } std::cout << std::endl; return 0; } ``` 在这个例子中,我们首先包含了 `<algorithm>` 头文件,以便使用 `sort` 函数。然后我们定义了一个整数数组 `arr`,并计算了数组的长度 `n`。接着,我们调用 `std::sort` 函数对数组进行排序,其中 `arr` 是指向数组开始位置的指针,`arr + n` 是指向数组结束位置的指针(即最后一个元素的下一个位置)。最后,我们遍历并输出排序后的数组。 此外,`sort` 函数还可以接受第三个参数,用于指定自定义的比较函数。例如,如果我们想按降序排序,可以这样做: ```cpp #include <iostream> #include <algorithm> // 包含 sort 函数的头文件 bool compare(int a, int b) { return a > b; // 降序比较函数 } int main() { // 定义一个整数数组 int arr[] = {5, 2, 9, 1, 5, 6}; // 计算数组的长度 int n = sizeof(arr) / sizeof(arr[0]); // 使用 sort 函数和自定义比较函数对数组进行降序排序 std::sort(arr, arr + n, compare); // 输出排序后的数组 std::cout << "降序排序后的数组: "; for (int i = 0; i < n; i++) { std::cout << arr[i] << " "; } std::cout << std::endl; return 0; } ``` 在这个例子中,我们定义了一个名为 `compare` 的比较函数,用于实现降序排序。然后在调用 `std::sort` 时将这个比较函数作为第三个参数传递进去。这样,`sort` 函数就会按照我们自定义的规则对数组进行排序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值