日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

[转载] 【Java】将一个字符串的字符排序,按ASCII表的顺序从小到大

發布時間:2025/3/11 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转载] 【Java】将一个字符串的字符排序,按ASCII表的顺序从小到大 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

參考鏈接: 在Java中搜索字符串中的字符和子字符串

將一個字符串的字符按ASCII表的順序從小到大排序,如將字符串“asdafxcvMADb”排序為“ADMaabcdfsvx”

?

?

算法的基本思想: 先將字符串轉化為一個char類型的數組,來進行存儲(因Java中的字符串并不像C++中那樣直接使用數組存儲)。 之后按照歸并排序的方法,將char數組中的內容按從小到大排序。歸并排序是一種穩定的排序算法,而且可以將算法的時間復雜度提高到O(nlgn)。?

廢話不多說,直接上代碼:?

public class Demo {

? ? public static void main(String[] args){

? ? ? ? Demo demo=new Demo();

? ? ? ? String string="asdafxcvMADb";

? ? ? ? demo.sortByASCII(string);

? ? }

?

? ? public void sortByASCII(String str){

? ? ? ? char []array=str.toCharArray();? ?//將一個簡單的字符串中的內容轉化為char數組

? ? ? ? sort(array);

? ? ? ? for(char s:array)? ? ? ? ? //輸出

? ? ? ? ? ? System.out.print(s);

? ? }

?

? ? public static void sort(char []arr){

? ? ? ? char []temp = new char[arr.length];? ? //在排序前,先建好一個長度等于原數組長度的臨時數組,避免遞歸中頻繁開辟空間

? ? ? ? sort(arr,0,arr.length-1,temp);

? ? }

? ? private static void sort(char[] arr,int left,int right,char []temp){

? ? ? ? if(left<right){

? ? ? ? ? ? int mid = (left+right)/2;

? ? ? ? ? ? //遞歸的方法

? ? ? ? ? ? sort(arr,left,mid,temp);? ? ? ? //左邊歸并排序,使得左子序列有序

? ? ? ? ? ? sort(arr,mid+1,right,temp);//右邊歸并排序,使得右子序列有序

? ? ? ? ? ? merge(arr,left,mid,right,temp);//將兩個有序子數組合并操作

? ? ? ? }

? ? }

? ? private static void merge(char[] arr,int left,int mid,int right,char[] temp){

? ? ? ? int i = left;? ? ? ? ? //左序列指針

? ? ? ? int j = mid+1;? ? ? ? //右序列指針

? ? ? ? int t = 0;? ? ? ? ? ?//臨時數組指針

? ? ? ? while (i<=mid && j<=right){

? ? ? ? ? ? if(arr[i]<=arr[j])

? ? ? ? ? ? ? ? temp[t++] = arr[i++];

? ? ? ? ? ? else

? ? ? ? ? ? ? ? temp[t++] = arr[j++];

? ? ? ? }

? ? ? ? while(i<=mid){? ? ? ? ? ? ? ?//將左邊剩余元素填充進temp中

? ? ? ? ? ? temp[t++] = arr[i++];

? ? ? ? }

? ? ? ? while(j<=right){? ? ? ? ? ? //將右序列剩余元素填充進temp中

? ? ? ? ? ? temp[t++] = arr[j++];

? ? ? ? }

? ? ? ? t = 0;

? ? ? ? //將temp中的元素全部拷貝到原數組中

? ? ? ? while(left <= right){

? ? ? ? ? ? arr[left++] = temp[t++];

? ? ? ? }

? ? }

}

?

?

鑒于代碼中的注釋也比較清楚,這里也不多說。

總結

以上是生活随笔為你收集整理的[转载] 【Java】将一个字符串的字符排序,按ASCII表的顺序从小到大的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。