首页 > 试题广场 >

对MAP进行排序

[编程题]对MAP进行排序
  • 热度指数:132 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
map是一种开发过程中经常使用的k-v数据结构,有个map保存了书名和书字数的关系,编写代码对map里面的书按照字数进行升序排序



输入描述:
第1行为map项的个数
第2到N行为k-v,以逗号分隔,值大小为int类型(不小于0)


输出描述:
输出map按照值升序排序后的结果
示例1

输入

4
a2,100
a1,100
b,300
c,200

输出

a2,100
a1,100
c,200
b,300

备注:
如果值相同的话需要按照输入顺序输出
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int a = in.nextInt();
        String[] x=new String[20];
        String[] y=new String[2*a];
        String[] z=new String[20];
        String v =in.nextLine();
        for(int i=0;i<a;i++){
            String b =in.nextLine();
            x=b.split(",");
            y[2*i]=x[0];
            y[2*i+1]=x[1];
        }
        for(int i=0;i<a;i++){
            for(int j=i+1;j<a;j++){
                int q = Integer.parseInt(y[2*i+1]);
                int w = Integer.parseInt(y[2*j+1]);
                if(q>w){
                    z[0]=y[2*i];
                    y[2*i]=y[2*j];
                    y[2*j]=z[0];  
                    z[1]=y[2*i+1];
                    y[2*i+1]=y[2*j+1];
                    y[2*j+1]=z[1];
                }
            }
        }
        for(int i=0;i<a;i++){
           System.out.println(y[2*i]+","+y[2*i+1]);
        }
       
    }
}
发表于 2023-11-01 22:49:35 回复(0)