学号20175301 《实现Linux下Sort -t : -k 2功能》

一、题目要求

模拟实现Linux下Sort -t : -k 2的功能。
要有伪代码,产品代码,测试代码(注意测试用例的设计)

二、题目信息

题目中给的一段代码模型:

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 }

要求实现Sort -t : -k 2的功能

  • -t 分隔符,将每一行数据按照该选项指定的分隔符分成多个域。默认情况下是使用tab键或者空格符来分割的。
  • -k 指定用哪个域的数据来进行排序
  • Sort -t : -k 2:即要求以冒号作为分隔符,给定数据的第二个区域的升序排列为标准,对输入数据进行排序。

三、解题思路

伪代码:

  1. 用split方法将tosort以冒号分割为四组
  2. 将第二组储存进数组K
  3. 遍历数组获取元素个数
  4. 对K数组进行arrays方法重新排序
  5. 排序后按照新K对原数组进行排列
  6. 输出新字符组
    产品代码:
package Mysort;

import com.sun.jdi.ArrayReference;

import java.util.*;
public class mysortable {
    public void mySort(String []toSort){
        System.out.println("Before sort:");
        for (String str : toSort) {
            System.out.println(str);
        }
        int[] k = new int [toSort.length];
        for (int i = 0; i < toSort.length; i++) {
            String[] tmp = toSort[i].split(":");
            k[i] = Integer.parseInt(tmp[1]);
        }
        System.out.println("After sort:");
        Arrays.sort(k);
        for (int i = 0; i < k.length; i++) {
            for (int j = 0; j < toSort.length; j++){
                if (k[i] == Integer.parseInt((toSort[j].split(":"))[1])) {

                    System.out.println(toSort[j]);
                }
            }
        }
    }
}

测试代码:

import Mysort.mysortable;

public class testMysort {
    public static void main(String[] args) {
        mysortable sort1 = new mysortable();
        String[] toSort = {"aaa:10:1:1",
                "ccc:30:3:4",
                "bbb:50:4:5",
                "ddd:20:5:3",
                "eee:40:2:20"};
        sort1.mySort(toSort);
        System.out.println();
    }
}

四、实验截图

五、码云链接

https://gitee.com/ShengHuoZaiDaXue/20175301/tree/master/20175301/Mysort

posted @ 2019-05-19 13:38  20175301李锦然  阅读(549)  评论(0编辑  收藏  举报