题解 第三章排序与查找| #找最小数#

找最小数

http://www.nowcoder.com/practice/ba91786c4759403992896d859e87a6cd

使用C语言的qsort如下

#include <stdio.h>
#include <stdlib.h>

int cmp(const void* a,const void*b)
{
    if( *((int*)a) > *((int*)b) )
        return 1;
    else if(*(int*)a==*(int*)b&&*((int*)a+1)>*((int*)b+1))
        return 1;
    else return -1;
}

int main()
{
    int Num;
    scanf("%d",&Num);
    int Arr[Num][2];
    for(int i=0;i<Num;i++)
        scanf("%d%d",&Arr[i][0],&Arr[i][1]);
    
    qsort(Arr,Num,2*sizeof(int),cmp);
    
    printf("%d %d",Arr[0][0],Arr[0][1]);
    return 0;
}

使用Cpp的sort命令如下

  • 使用vector存入二维数组有两种方法
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

//使用sort函数,对二维数组进行排列
//只能用动态数组法和vector数组法
// https://blog.csdn.net/leelitian3/article/details/79293058
//法1:vector数组法

bool cmp(vector<int> a,vector<int> b)
{
    if(a[0]!=b[0])
        return a[0]<b[0];
    if(a[1]!=b[1])
        return a[1]<b[1];
    return 0;
}

int main()
{
    ios::sync_with_stdio(false);
    
    int Num;
    cin>>Num;
    // vector<vector<int>> Arr(Num,vector<int>(2,0));
    //使用vector赋值给二维向量的方法1
    // https://www.cnblogs.com/hustdc/p/10435767.html
    
    //使用vector赋值给二维向量的方法2
    vector<int> Arr[Num];
    
    
    
    //使用vector数组来存储时
    //法1
    //for(int i=0;i<Num;i++)
    //    cin>>Arr[i][0]>>Arr[i][1];
    
    //法2,存入vector数组
    int tmpX,tmpY;
    for(int i=0;i<Num;i++)
    {
        cin>>tmpX>>tmpY;
        Arr[i].push_back(tmpX);
        Arr[i].push_back(tmpY);
    }
    
    
    //sort(Arr.begin(),Arr.end(),cmp);
    //法1
    
    //法2
    sort(Arr,Arr+Num,cmp);
    
    
    
    cout<<Arr[0][0]<<" "<<Arr[0][1]<<endl;
    return 0;
}
  • 使用动态数组作比较如下
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

//使用sort函数,对二维数组进行排列
//只能用动态数组法和vector数组法
// https://blog.csdn.net/leelitian3/article/details/79293058
//法1:vector数组法

bool cmp(vector<int> a,vector<int> b)
{
    if(a[0]!=b[0])
        return a[0]<b[0];
    if(a[1]!=b[1])
        return a[1]<b[1];
    return 0;
}

int main()
{
    ios::sync_with_stdio(false);
    
    int Num;
    cin>>Num;
    // vector<vector<int>> Arr(Num,vector<int>(2,0));
    //使用vector赋值给二维向量的方法1
    // https://www.cnblogs.com/hustdc/p/10435767.html
    
    //使用vector赋值给二维向量的方法2
    vector<int> Arr[Num];
    
    
    
    //使用vector数组来存储时
    //法1
    //for(int i=0;i<Num;i++)
    //    cin>>Arr[i][0]>>Arr[i][1];
    
    //法2,存入vector数组
    int tmpX,tmpY;
    for(int i=0;i<Num;i++)
    {
        cin>>tmpX>>tmpY;
        Arr[i].push_back(tmpX);
        Arr[i].push_back(tmpY);
    }
    
    
    //sort(Arr.begin(),Arr.end(),cmp);
    //法1
    
    //法2
    sort(Arr,Arr+Num,cmp);
    
    
    
    cout<<Arr[0][0]<<" "<<Arr[0][1]<<endl;
    return 0;
}
王道机试指南刷题 文章被收录于专栏

计划刷完这本书

全部评论

相关推荐

11-08 16:53
门头沟学院 C++
投票
滑模小马达:第三个如果是qfqc感觉还行,我签的qfkj搞电机的,违约金也很高,但公司感觉还可以,听说之前开过一个试用转正的应届生,仅供参考。
点赞 评论 收藏
分享
Java抽象带篮子:难蚌,点进图片上面就是我的大头😆
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务