博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
课下作业 MySort
阅读量:6120 次
发布时间:2019-06-21

本文共 2433 字,大约阅读时间需要 8 分钟。

课下作业 MySort

作业要求

MySort:

注意:研究sort的其他功能,要能改的动代码,需要答辩
模拟实现Linux下Sort -t : -k 2的功能。
要有伪代码,产品代码,测试代码(注意测试用例的设计)
参考Sort的实现。提交博客链接。

必须答辩才能得分

1 import java.util.*;  2  3 public class MySort1 {  4     public static void main(String [] args) {  5         String [] toSort = {"aaa:10:1:1",  6                             "ccc:30:3:4",  7                             "bbb:50:4:5",  8                             "ddd:20:5:3",  9                             "eee:40:2:20"}; 10 11         System.out.println("Before sort:"); 12         for (String str: toSort) 13                     System.out.println(str); 14 15         Arrays.sort(toSort); 16 17         System.out.println("After sort:"); 18         for( String str : toSort) 19             System.out.println(str); 20     } 21 }

具体步骤

首先需要了解Linux中的sort命令经过上网查找得知:

sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

sort-t选项和-k选项

如果有一个文件的内容是这样:

banana:30:5.5apple:10:2.5pear:90:2.3orange:20:3.4

这个文件有三列,列与列之间用冒号隔开了,第一列表示水果类型,第二列表示水果数量,第三列表示水果价格。

那么如果要以水果数量来排序,也就是以第二列来排序,利用sort实现就要使用sort提供的-t选项,后面可以设定间隔符。

$ sort -n -k 2 -t : facebook.txt

指定了间隔符之后,就可以用-k来指定列数了,运行结果如下:

apple:10:2.5orange:20:3.4banana:30:5.5pear:90:2.3

我们使用冒号作为间隔符,并针对第二列来进行数值升序排序,结果很令人满意。

sort -n选项

由于排序程序将数字按字符来排序了,排序程序会先比较1和2,显然1小,所以就将10放在2前面,这也是sort的一贯作风。我们如果想改变这种现状,就要使用-n选项,来告诉sort要以数值来排序

伪代码

1、使用String类提供的split()方法,将toSort数组以为分隔符存入数组part

2、新建数组a,将part数组的第二列数值给数组a
3、调用sort方法对数组a进行升序排序
4、输出排序后的结果

产品代码

import java.util.*;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 [] part= toSort[i].split(":");            a[i] = Integer.parseInt(part[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]);                }            }        }    }}

运行结果

1591651-20190520104846838-1607141838.png

参考资料

转载于:https://www.cnblogs.com/20175317zrw/p/10889411.html

你可能感兴趣的文章
在soapui上踩过的坑
查看>>
MySQL的字符集和字符编码笔记
查看>>
ntpd同步时间
查看>>
must implement java.io.Serializable hessian
查看>>
Microsoft Licenses Flash Lite for Windows Mobile Users
查看>>
HDOJ 2020 绝对值排序
查看>>
HDOJ/HDU 2560 Buildings(嗯~水题)
查看>>
Maven编译时跳过Test
查看>>
Spring Boot 整合Spring Security 和Swagger2 遇到的问题小结
查看>>
[20170628]12C ORA-54032.txt
查看>>
除以2
查看>>
高可用集群原理解析
查看>>
Nginx配置URL转向tomcat
查看>>
极客Web前端开发资源大荟萃#001
查看>>
让div固定在某个位置
查看>>
Java开发环境Docker镜像
查看>>
从无到有,WebService Apache Axis2初步实践
查看>>
任务调度(一)——jdk自带的Timer
查看>>
UIKit框架(15)PCH头文件
查看>>
整理看到的好的文档
查看>>