题解 | 字符串内排序

字符串内排序

https://www.nowcoder.com/practice/cc2291ab56ee4e919efef2f4d2473bac

#include <stdio.h>
#include <string.h>
#define str_len 201
int merge(char str[str_len], int start, int mid, int end){
    char result[str_len];
    int k=0;
    int i=start;
    int j=mid+1;
    while(i<=mid && j<=end){
        if(str[i]>str[j]){
            result[k++] = str[j++];
        }else{
            result[k++] = str[i++];
        }
    }
    // 解决剩余的
    if(i<=mid){
        while(i<=mid){
            result[k++] = str[i++];
        }
    }
    if(j<=mid){
        while(j<=end){
            result[k++] = str[j++];
        }
    }
    // 结果
    for(i=start,j=0; j<k; i++,j++){
        str[i] = result[j];
    }
    return 0;
}

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

int main() {
    char str[str_len];
    while(scanf("%s",str) != EOF){
        int n = strlen(str);
        // 排序
        mergeSort(str, 0, n-1);
        // 输出
        printf("%s\n", str);
    }

    return 0;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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