题解 | #特殊排序# 王道 机试指南 第二章排序

特殊排序

https://www.nowcoder.com/practice/57f0f528bff149be9580af66f6292430

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int main() {
    int n;
    int data[1001];
    int i;
    while (scanf("%d", &n) != EOF) {
        for (i = 0; i < n; i++) {
            scanf("%d", &data[i]); //输入数据
        }
        //找最大值并剔除
        int max = data[0];
        int k = 0; //记录最大值坐标,初始值0
        for (int i = 0; i < n; i++) {
            if (max < data[i]) {
                max = data[i];
                k = i; //如果出现更大的值,记录坐标
            }
        }
        //已经找到最大值max和对应的坐标
        //输出最大值
        printf("%d\n",max);
        // 在数组中,删除该元素,该元素后面的元素前移1个
        for (i = k; i <= n - 2; i++) {
            data[i] = data[i + 1];
            //最后一个是data[n-2]=data[n-1]
        }//删除了最后一个元素,现在的长度是n-1
        sort(data, data + n - 1); //升序排列
        if(n==1)//刚开始输入的数据只有1个,删除1个最大值,就没有数据了
            printf("-1");
        for (i = 0; i < n - 1; i++)
            printf("%d ", data[i]);
    }
    return 0;
}

习题3.1

特殊排序(华中科技大学复试上机题)

http://t.cn/E9gio39

全部评论

相关推荐

10-28 14:42
门头沟学院 Java
watermelon1124:因为嵌入式炸了
点赞 评论 收藏
分享
美丽的查理斯不讲武德:包kpi的啊,感觉虾皮一点hc都没有
点赞 评论 收藏
分享
蚂蚁 基架java (n+6)*16 签字费若干
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务