對字符串中字符進行自然順序排序(基本類型排序)-冒泡算法實現


字符串本質就是字符數組,所以對字符串的排序也就是對字符數組的排序(有選擇排序、冒泡排序、快速排序等常用算法);

  • 思路:
    • 字符串轉換成字符數組
    • 數組排序
      • 用的冒泡排序,
        • 注意點:
          1. 一層循環下來會將最小的元素轉移到末尾,即最小的元素與其他元素都進行了一次比較,所以還需要外層循環控制交換次數(length-1);
          而不是所有的元素大小,所以還需要外層嵌套
          2. 十進制ASCII碼,對應的字母位越小,十進制數越大,與自然位相駁;
    • 字符數組轉換成字符串

例題加詳細的注釋:

@Test
public void Sorting(){
    String str = "dkgkfjg";
//1、字符串轉換成字符串數組
    char[] ch = str.toCharArray();

//2、對數組進行排序
    //方式一:調用靜態方法Arrays.sort()
    //Arrays.sort(ch);

    /*方式二:冒泡排序:
    * */
    //外層循環:控制要交換的輪數,最多要交換length-1次
    for (int j = 0; j < ch.length-1; j++) {
        //創建一個開關,且每次循環開始都打開開關
        boolean loopFlag = true;

        //內層循環:對前后兩個數進行比較、交換
        for (int i = 0; i < ch.length - 1 - i; i++) {//-i是已經交換了的元素
            if(ch[i] > ch[i+1]){//這樣比較的時其對應的十進制ASCII碼,對應的字母位越小,十進制數越大,所以反着來
                char c = ch[i];
                ch[i] = ch[i+1];
                ch[i+1] = c;
                //只要本層循環發生過交換,說明還沒有比較完,關閉開關
                loopFlag = false;
            }
            //如全部比較完成,無需等待循環條件滿足再跳出外層循環,提高了運行效率
            if(loopFlag){
                break;
            }
        }
    }
//3、將排序后的數組轉換成字符串
    String strSort = String.valueOf(ch);
    System.out.println("轉換后的數組:"+strSort);
}


免責聲明!

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



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