题解 | #单词倒排#

图片整理

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-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
菜菜咪:1. 可以使用简历网站的模版,美观度会更好一点 2. 邮箱可以重新申请一个,或者用qq邮箱的别名,部分hr可能会不喜欢数字邮箱 3. 项目经历最好分点描述,类似的项目很多,可以参考一下别人怎么写的 4. 自我评价可加可不加,技术岗更看重技术。最后,加油,优秀士兵
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务