java实现对字符串和数字的冒泡排序

 

 

public static void sort(Object[] objects){
        if(objects instanceof Number[]){
            for (int i = 0; i < objects.length-1; i++) {
                for (int j = i+1; j < objects.length; j++) {
                    //判断前一个值是否大于后一个值
                    if(((Number)objects[i]).doubleValue()>((Number) objects[j]).doubleValue()){
                        Object temp = objects[i];
                        objects[i] = objects[j];
                        objects[j] = temp;
                    }
                }
            }
        }else if(objects instanceof String[]){
            for (int i = 0; i < objects.length-1; i++) {
                for (int x = i+1; x < objects.length; x++) {
                    //拿到前一个String
                    char[] charBefore = ((String)objects[i]).toCharArray();
                    //拿到后一个String
                    char[] charsAfter = ((String)objects[x]).toCharArray();
                    //计算当前变换的String[x]的长度
                    int length = ((String) objects[x]).length();
                    //获取最短循环次数,以避免下标越界
                    int loopNumber = ( charBefore.length > length ? length : charBefore.length );
                    for (int j = 0; j < loopNumber; j++) {
                        //判断前一位的首字母是否小于后一位,例如:首字母a<首字母b则不用再比较
                        if((int)charBefore[j]<(int)charsAfter[j]){
                            break;
                        }
                        //判断前一位字母是否大于后一位字母,若是大于则替换位置
                        else if((int)charBefore[j]>(int)charsAfter[j]){
                            Object temp = objects[i];
                            objects[i] = objects[x];
                            objects[x] = temp;
                            break;
                        }
                        //若是两个String的长度不一样,最短内容的最短起始位到最短结束位 和 最长内容的最短起始位和最短结束位的这段字符串长度内容相等,
                        // 则长度最短的放在前面,例如String a = "asd";String b = "as"; 则 字符串b排在前面
                        else if (j == loopNumber-1 && charBefore[loopNumber-1] == charsAfter[loopNumber-1]){
                            if(charBefore.length > charsAfter.length) {
                                Object temp = objects[i];
                                objects[i] = objects[x];
                                objects[x] = temp;
                            }
                        }
                    }
                }
            }
        }
    }