阿里巴巴0322晚春招实习笔试算法题解析 --- sort函数的用法与第二题:数组重排

时间:2021-06-01 01:15:18

sort (first, last) 对容器或普通数组中 [first, last) 范围内的元素进行排序,默认进行升序排序。

sort() 函数是基于快速排序实现的

sort() 只对 array、vector、deque 这 3 个容器提供支持

默认升序排序

对于指定区域内值相等的元素,sort() 函数无法保证它们的相对位置不发生改变。如果需要保证值相等元素的相对位置不发生改变,可以选用 stable_sort() 排序函数。

sort() 函数位于头文件中

#include <algorithm>

升序:sort(begin,end,less());
降序:sort(begin,end,greater()).

sort(a,a+20,greater<int>());
sort(a,a+6,less<int>());

第二题:数组重排
阿里巴巴0322晚春招实习笔试算法题解析 --- sort函数的用法与第二题:数组重排
输入描述
第一行输入一个正整数n。
第二行输入n个正整数ai。
第三行输入n个正整数bi
1<n≤ 105
1<ai,bi ≤109
输出描述
n个正整数,代表重排后的a数组。如果有多个重排方式,输出任意即可。
示例1
输入
4
2 1 3 2
5 2 4 2
输出
5

C++代码:

#include<iostream>
#include<algorithm> 
using namespace std;

int main(){
	int n;
	cin >> n;
	int a[n];
	int b[n];
	for(int i = 0;i < n;i ++){
		cin >> a[i];
	}
	for(int i = 0;i < n;i ++){
		cin >> b[i];
	}
	sort(a,a+n);
	sort(b,b+n);
	int sum = 0;
	int temp = 0;
	for(int i = 0;i < n;i ++){
		temp = a[i] - b[i];
		if(temp < 0){
			temp = -temp;
		}
		sum += temp;
	}
	cout << sum;
	return 0;
}