电子商务网站建设与维护读书心得,网站建设合同用贴印花税吗,如何给网站做二维码,做网站哪家公司最好参考链接#xff1a; 在Java中搜索字符串中的字符和子字符串
将一个字符串的字符按ASCII表的顺序从小到大排序#xff0c;如将字符串“asdafxcvMADb”排序为“ADMaabcdfsvx” 算法的基本思想#xff1a; 先将字符串转化为一个char类型的数组#xff0c;来进行存储#xf…参考链接 在Java中搜索字符串中的字符和子字符串
将一个字符串的字符按ASCII表的顺序从小到大排序如将字符串“asdafxcvMADb”排序为“ADMaabcdfsvx” 算法的基本思想 先将字符串转化为一个char类型的数组来进行存储因Java中的字符串并不像C中那样直接使用数组存储。 之后按照归并排序的方法将char数组中的内容按从小到大排序。归并排序是一种稳定的排序算法而且可以将算法的时间复杂度提高到O(nlgn)。
废话不多说直接上代码
public class Demo { public static void main(String[] args){ Demo demonew Demo(); String stringasdafxcvMADb; demo.sortByASCII(string); } public void sortByASCII(String str){ char []arraystr.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(leftright){ int mid (leftright)/2; //递归的方法 sort(arr,left,mid,temp); //左边归并排序使得左子序列有序 sort(arr,mid1,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 mid1; //右序列指针 int t 0; //临时数组指针 while (imid jright){ if(arr[i]arr[j]) temp[t] arr[i]; else temp[t] arr[j]; } while(imid){ //将左边剩余元素填充进temp中 temp[t] arr[i]; } while(jright){ //将右序列剩余元素填充进temp中 temp[t] arr[j]; } t 0; //将temp中的元素全部拷贝到原数组中 while(left right){ arr[left] temp[t]; } }
} 鉴于代码中的注释也比较清楚这里也不多说。