• 20165215 MySort的实现


    MySort的实现

    要求

    • 模拟实现Linux下Sort -t : -k 2的功能

    • 要有伪代码,产品代码,测试代码(注意测试用例的设计)

    import java.util.*;
       public class MySort1 {
           public static void main(String [] args) {
               String [] toSort = {"aaa:10:1:1",
                                   "ccc:30:3:4",
                                   "bbb:50:4:5",
                                   "ddd:20:5:3",
                                   "eee:40:2:20"};
              System.out.println("Before sort:");
              for (String str: toSort)
                          System.out.println(str);
              Arrays.sort(toSort);
              System.out.println("After sort:");
              for( String str : toSort)
                  System.out.println(str);
          }
      }
    

    相关知识点

    sort

    • 工作原理:从每个比较单元的首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出
    • 相关命令行
      • -u:在输出中去除重复行
      • -r:将输出改为降序排列
      • -n:以数值来进行排序,避免出现10比2小的错误
      • -t -k n:当输入有多列时,表示输出将按第n列的数值进行排序
      • -f:忽略大小写进行比较
      • -b:从第一个可见字符开始比较
      • -C:检查文件是否已排好序,如果乱序则返回1
    • 因此对以上模板执行sort -t : -k 2,就是要实现对使用“:”分隔的第二列字符串按照从小到大的顺序重新排列的功能

    split

    • public String[] split(String regex):一个String类的数组以regex传入的分隔符为标准,对字符串进行分隔,使用时分隔符要放在双括号中

    代码

    • 伪代码
    将tosort数组以第二列数值大小为标准从小到大排列:
    新建数组a,长度与tosort数据长度相同
    调用split函数将tosort数组以:(冒号)为分隔符分成小字符串
    将每一个tosort元素的第二例数值存入数组a中
    调用Arrays类的sort函数对a进行排序
    使用嵌套循环输出排序后的结果
    
    • 产品代码
    package week12;
    import java.util.*;
    import java.lang.Integer;
    public class MySort{
        public static void main(String [] args){
            String [] toSort = {"aaa:10:1:1",
                    "ccc:30:3:4",
                    "bbb:50:4:5",
                    "ddd:20:5:3",
                    "eee:40:2:20"};
            System.out.println("Before sort:");
            for (String str: toSort)
                System.out.println(str);
            int [] a = new int[toSort.length];
            for (int i = 0; i < toSort.length; i++){
                String [] tmp = toSort[i].split(":");
                a[i] = Integer.parseInt(tmp[1]);
            }
            Arrays.sort(a);
            System.out.println("After sort:");
            for (int i = 0; i < a.length; i++)
                for (int j = 0; j < toSort.length; j++)
                    if (a[i] == Integer.parseInt((toSort[j].split(":"))[1]))
                System.out.println(toSort[j]);
        }
    }
    

    运行结果

    测试结果

  • 相关阅读:
    css 超出两行省略号,超出一行省略号
    css 去掉i标签默认斜体样式
    Spring 使用单选按钮
    Spring Maven工程引入css,js
    Sping 补充完成修改功能
    Spring 控制器层如何启用验证?
    Spring 控制器层如何调用DAO层
    spring boot工程如何启用 热启动功能
    Spring 视图层如何显示验证消息提示
    Sping POJO中如何添加验证规则和验证消息提示
  • 原文地址:https://www.cnblogs.com/fyss/p/9065173.html
Copyright © 2020-2023  润新知