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;
                            }
                        }
                    }
                }
            }
        }
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM