一:思路来源

~那一份坚持

//这个很简单啊!怎么样身高差最小呢?就是两身高差不多的人站一起咯,小时候站队 老师总让
//矮的站中间高的站两边,就是这个道理,如 9 8 7 6 6 7 8 9然后9和9再拉手不就可以了吗 !所以
//将数据输入一个数组如【8 9 7 6 5 4 3 2】然后排序【2 3 4 5 6 7 8 9】然后遍历数组进入
//一个队列一个栈 现规定,索引为0,2,4,,,的依次进入队列Q1,索引为1,3,5,,,,的依次进入//栈S1,就形成一个队列2 4 6 8 (队列尾为8)和一个栈3 5 7 9(栈顶为9) 。然后出栈9 7 5 3 
//依次进入队列尾 形成 2 4 6 8 9 7 5 3 就排队成功,2和3拉手就成圈,求每个元素与挨着的
//距离就可以了

二:代码实现

#include<iostream>
#include<algorithm>
#include <cstring>
using namespace std;
int main(){
    int n=0,max=-1;
    cin>>n;
    int a[n]; 
    int b[n]; 
    int c[n];
    memset(a, 0,sizeof(a));
    memset(b, 0,sizeof(b));
    memset(c, 0,sizeof(c));
    int x=0,y=0;
    for(int i=0;i<n;i++)
        cin>>a[i];
    sort(a,a+n);
    for(int i=0;i<n;i++)
    {
        if(i%2==0)
        {
            b[x]=a[i];
            x++;
        }else{
            c[y]=a[i];
            y++;
        }
        //cout<<c[0]<<" 1"<<c[1]<<endl;
    }
    int k=0;
    for(int i=y-1;i>=0;i--)
    {
       // cout<<c[i]<<" c"<<endl;
        b[x+k]=c[i];
        k++;
    }
//     for(int i=0;i<n;i++)
//          cout<<b[i]<<endl;
    for(int i=0;i<n-1;i++)
    {
       // cout<<a[i]<<" "<<a[i+1]<<endl;
        int temp=abs(b[i+1]-b[i]);
        if(temp>max)
            max=temp;
        //cout<<max<<endl;
    }
     int tempend=abs(b[0]-b[n-1]);
    if(tempend>max)
        max=tempend;
    cout<<max<<endl;
    return 0;
}