请问怎样才能使排序正确求答案及注解

赶海咯

描述

小星有一位济南的朋友小Y,最近济南的天气实在太热了,想要来青岛度假,想要去赶海,但是赶海需要知道,涨潮和退潮的情况,所以就让本地人的小星,来调查涨潮和退潮的情况。
不幸的是,小星把每一天调查的数据放在了书房,但是在开窗户的时候,风把数据的纸张吹乱了,幸亏小星还能记得这些数据的特征
他开始测量退潮时的水位,他的第二次测量是涨潮时的水位,之后继续在退潮和涨潮之间交替测量。
所有涨潮测量值都高于所有退潮测量值。
注意到,随着时间的推移,涨潮只会变高,退潮只会变低。
现在请你帮助小星把数据恢复原状吧

输入描述
第一行,输入调查数据的数量
第二行,输入n个数据,表示调查的数据(保证在int范围)

输出描述
输出恢复后的数据顺序,每个数据直接用空格隔开

样例输入 1

8
10 50 40 7 3 110 90 2
样例输出 1

10 40 7 50 3 90 2 110

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    int n;
    cin >> n;

    vector<int> data(n);
    for (int i = 0; i < n; i++) {
        cin >> data[i];
    }

    sort(data.begin(), data.end());

    vector<int> result(n);
    int start = 0, end = n - 1;
    for (int i = 0; i < n; i++) {
        if (i % 2 == 0) {
            result[i] = data[start++];
        } else {
            result[i] = data[end--];
        }
    }

    for (int i = 0; i < n; i++) {
        cout << result[i] << " ";
    }
    cout << endl;

    return 0;
}


不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/707844
  • 除此之外, 这篇博客: 一个水藻,经过两天的生长后,从第3天开始每天都会分裂出一个新藻,而分裂出的新藻同样经过两天的生长,也会从第3天开始每天分裂出一个新藻,问经过n天后,共有多少个水藻存在。暂时不考虑藻死亡的情况。中的 一个水藻,经过两天的生长后,从第3天开始每天都会分裂出一个新藻,而分裂出的新藻同样经过两天的生长,也会从第3天开始每天分裂出一个新藻,问经过n天后,共有多少个水藻存在。暂时不考虑藻死亡的情况。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    可以利用面向对象的思想去解决问题,先去生产一个水藻类,而每个生成的水藻有自己的days属性,每过三天一个水藻就会生出days=1的新水藻,最后再将新水藻的个数全部增加到总到list当中

    package com.yan.test;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    public class Test {
        public static void main(String[] args) {
            List<shuizao> list = new ArrayList<>();
            list.add(new shuizao(1));
            System.out.println("输入存活天数");
            Scanner scanner = new Scanner(System.in);
            int nextInt = scanner.nextInt();
            for (int i = 0; i < nextInt; i++) {
                List<shuizao> addlist = new ArrayList<>();//新增的水藻个数
                for (shuizao s : list) {
                    if (s.days >= 3)
                        addlist.add(new shuizao(1));
                    s.days++;
                }
                list.addAll(addlist);
                System.out.println("水藻当天的总数:"+list.size()+"\t"+"水藻当天增加的数量:"+addlist.size());
            }
        }
    
    
        //生成的每一个水藻
        static class shuizao{
            int days;
    
            public shuizao(int days){
                this.days = days;
            }
        }
    }
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^