public static int compareArrayByPrefix(char[] shortArray, int shortIndex,
      char[] longArray, int longIndex) {

    // 空数组是所有数组的前缀，不考虑index
    if (shortArray == null)
      return 0;
    else if (longArray == null)
      return (shortIndex < shortArray.length) ? 1 : 0;

    int si = shortIndex, li = longIndex;
    while (si < shortArray.length && li < longArray.length
        && shortArray[si] == longArray[li]) {
      si++;
      li++;
    }
    if (si == shortArray.length) {
      // shortArray 是 longArray的prefix
      return 0;
    } else {
      // 此时不可能si>shortArray.length因此只有si <
      // shortArray.length，表示si没有到达shortArray末尾

      // shortArray没有结束，但是longArray已经结束，因此shortArray > longArray
      if (li == longArray.length)
        return 1;
      else
        // 此时不可能li>longArray.length因此只有li < longArray.length
        // 表示shortArray和longArray都没有结束，因此按下一个数的大小判断
        return (shortArray[si] > longArray[li]) ? 1 : -1;
    }
  }