关于解决MySort

关于解决MySort

  • 那天老师教给我们关于sort的用法以及String类中的split方法。在一定程度上告诉我们sort用法的原理和一些特别的用法后,老师叫我们用JAVA尝试去设计一个"MySort"来实现sort的方法。

  • 据我的个人情况我对split的用法了解不够深,在帮助文档中发现其解释我能了解的也是十分有限

如:regex是什么,而又应该填什么;使用split方法时又应该用什么样的格式来使用这一方法……

    带着这些疑问,我上到网上去查相关资料,发现split的用法是建立在一个String类的数组中其中的regex意思是以什么分隔符为标准,并对字符串进行分隔,用的时候分隔符要放在双括号中如:

若以"aa:10:1:1"中的":"为分隔符

"aa:10:1:1"--->"aa" "10" "1" "1"

这样一来就知道split的方法之一了,还有一个在regex参数后添加一个整形数。为探求其功能,我直接在我原来学习split的代码上试验

public class aboutsplit {
    public static void main(String[] args){
        String [] toSort = {"aaa:10:1:1"}

             String[] div = toSort[0].split(":",2);
             for(int d=0; d<div.length;d++){
                 System.out.println(div[d]);
             }
            }
            }

    因此可以得到这种用法可以使第n个分支开始停止断开。

参考资料:Java split() 方法 | 菜鸟教程

  • 解决了split的知识点后,仍然有新的麻烦——字符串是属于分开的状态,怎样才可以将怎段完整的字符串进行排序?

    在经过一段时间的思考和纸上的运算后,可以利用老师给的模板用两个循环来实现这个想法。

  • 首先创建一个新的字符串数组来存放新排列的字符串。
  • 创建两个互相镶嵌的循环来实现字符串的新排列
  • 第一个循环来将新排列的字符串放进新数组中
  • 第二个循环用来匹配,是否满足我要求的列排序

    完成后代码如下:

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 [] k2 = new int[toSort.length];
        for(int i =0;i<toSort.length;i++){
            String[] div = toSort[i].split(":");
            k2[i]=Integer.parseInt(div[1]);
        }
        Arrays.sort(k2);
        String[] save = new String[k2.length];
        for(int i=0;i<toSort.length;i++)
            for (int k = 0; k < k2.length; k++) {
               if (toSort[i].substring(4,6).equals(String.valueOf(k2[k]))) {
                   save[k]=toSort[i];
               }

           }
           System.out.println();
        System.out.println("After sort:");
           for(int i =0;i<save.length;i++){
            System.out.println(save[i]);
           }
       }
              }


运行结果:

  • 感悟与反思

    自己写代码的效率还是不够高,实践的次数和深度还是不够。今后会自己动手多写新代码,从而发现更多的问题,从而能够让自己进步。

原文地址:https://www.cnblogs.com/VersionP1/p/6799346.html