题解 | Simple Sorting

Simple Sorting

https://www.nowcoder.com/practice/139761e0b59a405786898b7f2db9423f

#include <stdio.h>
#define dataLen 1000

int merge(int data[dataLen], int start, int mid, int end){
    int result[dataLen];
    int k=0;
    int i=start;
    int j=mid+1;
    // 排序
    while(i<=mid && j<=end){
        if(data[i]<data[j]){
            result[k++] = data[i++];
        }else{
            result[k++] = data[j++];
        }
    }
    // 处理剩余的
    while(i<=mid){
        result[k++] = data[i++];
    }
    while(j<=end){
        result[k++] = data[j++];
    }
    // 复制
    for(i=start,j=0; j<k; i++,j++){
        data[i] = result[j];
    }
    return 0;
}

int mergeSort(int data[dataLen], int start, int end){
    if(start>=end)
        return 0;
    int mid = (start+end)/2;
    mergeSort(data, start, mid);
    mergeSort(data, mid+1, end);
    merge(data, start, mid, end);
    return 0;    
}

int main() {
    int n;
    int data[dataLen];
    while(scanf("%d", &n) != EOF){
        for(int i=0; i<n; i++){
            scanf("%d", &data[i]);
        }
        // 排序
        mergeSort(data, 0, n-1);
        // 去重+输出
        int k=0;
        while(k<n){
            if(data[k]==data[k+1]){
                k++;
            }else{
                printf("%d ", data[k]);
                k++;
            }
        }
    }
    return 0;
}

全部评论

相关推荐

点赞 评论 收藏
分享
07-31 14:40
门头沟学院 Java
代码主理人:触发重传机制了,可能是服务器负载太高了,ACK丢包了
找工作时遇到的神仙HR
点赞 评论 收藏
分享
码农顶针:估计让你免费辅导老板孩子的学习
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
08-27 14:44
bg,末流211本科,只能保本校。鼠鼠突然收到节子的测开offer。好难选啊!
水中水之下水道的鼠鼠:无脑字节,现在这形势读完研出来不一定能进字节了
投递字节跳动等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务