题解 | #图片整理#

图片整理

http://www.nowcoder.com/practice/2de4127fda5e46858aa85d254af43941

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        char[] chrs = scan.nextLine().toCharArray();
        mergeSort(chrs);
        StringBuffer sb = new StringBuffer("");
        for (char chr : chrs) {
            sb.append(chr);
        }
        System.out.println(sb);
    }
    public static void mergeSort(char[] chrs) {
        if (null == chrs || chrs.length < 2) {
            return;
        }
        process(chrs, 0, chrs.length - 1);
    }
    public static void process(char[] chrs, int start, int end) {
        if (start >= end) {
            return;
        }
        int mid = start + ((end - start) >> 1);
        process(chrs, start, mid);
        process(chrs, mid + 1, end);
        merge(chrs, start, mid, end);
    }
    public static void merge(char[] chrs, int start, int mid, int end) {
        char[] helper = new char[end - start + 1];
        int index = 0;
        int p1 = start;
        int p2 = mid + 1;
        while (p1 <= mid && p2 <= end) {
            helper[index++] = chrs[p1] <= chrs[p2] ? chrs[p1++] : chrs[p2++];
        }
        while (p1 <= mid) {
            helper[index++] = chrs[p1++];
        }
        while (p2 <= end) {
            helper[index++] = chrs[p2++];
        }
        for (int i = 0; i < helper.length; i++) {
            chrs[start + i] = helper[i];
        }
    }
}
全部评论
该牛油正在参与牛客写题解薅羊毛的活动,牛币,周边,京东卡超多奖品放送,活动进入倒计时!快来捡漏啦https://www.nowcoder.com/discuss/888949?source_id=profile_create_nctrack&channel=-1
点赞
送花
回复
分享
发布于 2022-04-20 16:54

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务