参数名按ASCII码大小排序 冒泡算法实现

上一篇博客签名算法 待签名参数按照字段名的ASCII码大小排序 Android、JS中实现中提到的排序方法实现都是利用系统的api,在这里想用一下底层算法来实现:

1.先看系统api实现 
    String[] data = new String[]{"key", "ba","ba", "ac", "bb","bbc","ccce","ccc"};
    Arrays.sort(data);
    //System.out.println("compare***" + compare("bb", "bbc"));
    //System.out.println("compare***" + compare("ccce", "ccc"));
    //data = bubbleSort(data);
    for(String i:data){
        System.out.println("array i***" + i);
    }
    =》
    I/System.out: array i***ac
                  array i***ba
                  array i***ba
                  array i***bb
                  array i***bbc
                  array i***ccc
                  array i***ccce
                  array i***key


2.自己写排序算法实现
    /**
     * 冒泡排序
     */
    public String[] bubbleSort(String[] array) {
       if (array.length == 0)
            return array;
        for (int i = 0, l = array.length; i < l - 1; i++) {
            for (int j = 0; j < l - 1 - i; j++) {
                if (compare(array[j], array[j + 1]) == 1) {
                    String temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }
        return array;
    }

   /**
     * 比较2String之间大小
     */
    public int compare(String o1, String o2) {
        //2者取最短
        int length = Math.min(o1.length(), o2.length());
        for (int i = 0; i < length; i++) {
            if (o1.charAt(i) < o2.charAt(i)) {
                return -1;
            } else if (o1.charAt(i) > o2.charAt(i)) {
                return 1;
            }
        }
       //程序运行到这 说明前面2者比较的部分是相等的,则继续比较长度
         if (o1.length() < o2.length()) {
             return -1;
         } else if (o1.length() > o2.length()) {
             return 1;
         }else{
              return 0;
         }
    }

     String[] data = new String[]{"key", "ba", "ba", "ac", "bb", "bbc", "ccce", "ccc"};
    //Arrays.sort(data);
     System.out.println("compare***" + compare("bb", "bbc"));
      System.out.println("compare***" + compare("ccce", "ccc"));
      data = bubbleSort(data);
      for (String i : data) {
          System.out.println("array i***" + i);
      }

    I/System.out: compare***-1
                  compare***1
                  array i***ac
                  array i***ba
                  array i***ba
                  array i***bb
                  array i***bbc
                  array i***ccc
                  array i***ccce
                  array i***key

其他排序算法可自行实现,关键点在compare方法(比较2String之间大小).

猜你喜欢

转载自blog.csdn.net/u012982629/article/details/81592725