字符串本質就是字符數組,所以對字符串的排序也就是對字符數組的排序(有選擇排序、冒泡排序、快速排序等常用算法);
- 思路:
- 字符串轉換成字符數組
- 數組排序
- 用的冒泡排序,
- 注意點:
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);
}