题解 第三章排序与查找| #找最小数#
找最小数
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;
}
王道机试指南刷题 文章被收录于专栏
计划刷完这本书