.本题就是先进行排序然后将其两两做差求和即可
#include<iostream>
using namespace std;
//交换
void swap(int list[], int left, int right) {
int tamp;
tamp = list[left];
list[left] = list[right];
list[right] = tamp;
}
//求分割点
int qiupoint(int list[], int left, int right) {
int frist = list[left];
while (left < right) {
while (left < right&&list[right]>=frist) {
right--;
}
swap(list, left, right);
while (left < right&&list[left]<=frist) {
left++;
}
swap(list, left, right);
}
return left;
}
//快速排序法
void quickpx(int list[], int left, int right) {
if (left < right) {
//分割点
int point = qiupoint(list, left, right);
//递归左调用
quickpx(list, left, point - 1);
//递归右调用
quickpx(list, point + 1, right);
}
}
int main() {
int n;
cin >> n;
const int h = n;
if (2 <= n && n <= 100 && n % 2 == 0) {
int list[1000];
for (int i = 0; i < n; ++i) {
cin >> list[i];
}
quickpx(list, 0, n - 1);
int sum=0;
for (int i = 0; i < n; i+=2) {
sum = sum + (list[i + 1] - list[i]);
}
cout << sum << endl;
}
return 0;
}