题解 | #单词倒排#

图片整理

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

import java.util.* ;
public class Main{
    public static void main(String...args) {
        Scanner sc = new Scanner(System.in) ;
        while(sc.hasNextLine()) {
            char[] arr = sc.nextLine().toCharArray() ;
            sort(arr) ;
            System.out.println(new String(arr)) ;
        }
    }
    //使用堆排序
    public static void sort(char[] arr) {
        //初始化堆
        for(int i = (arr.length-1-1)/2 ; i >= 0 ; i --) {
            heapify(arr , i , arr.length-1) ;
        }
        //逐个交换
        for(int j = arr.length-1 ; j > 0 ; j--) {
            char t = arr[0] ;
            arr[0] = arr[j] ;
            arr[j] = t ;
            heapify(arr , 0 , j-1) ;
        }
    }
    public static void heapify(char[] arr , int s , int e) {
        int c1 = 2*s+1 ;
        int c2 = 2*s+2 ;
        int max = s ;
        if(c1 <= e && arr[c1] > arr[max]) {
            max = c1 ;
        }
        if(c2 <= e && arr[c2] > arr[max]) {
            max = c2 ;
        }
        if(max != s) {
            char t = arr[s] ;
            arr[s] = arr[max] ;
            arr[max] = t ;
            heapify(arr , max , e) ;
        }
    }
    
} 

一个菜鸟的算法刷题记录 文章被收录于专栏

分享一个菜鸟的成长记录

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-21 19:05
面试官_我太想进步了:混学生会的,难怪简历这么水
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务