本帖最后由 史政法 于 2013-4-5 20:51 编辑
- /*
- 对字符串中字符进行自然顺序排序。
- 思路:
- 1,字符串变成字符数组。
- 2,对数组排序,选择,冒泡,Arrays.sort();
- 3,将排序后的数组变成字符串。
- "vcz1bdAa+cs"-->abccdsvz
- */
- import java.util.*;
- class Demo
- {
- public static void sop(Object obj)
- {
- System.out.println(obj);
- }
- public static void main(String[] args)
- {
- String s = "vcz1bdAa+cs";
- s = toSort(s);
- sop(s);
- }
- public static String toSort(String s)
- {
- //将字符串变成字符数组
- char[] chr = new char[s.length()];
- chr = s.toCharArray();
- //对字符数组进行排序,使用选择排序。排序过程中判断字符是否是小写a-z之间的字符,如果不是,不排序,
- sort(chr); //<font color="#ff0000">这个地方,明明已经把小写的a-z选出来排序过了,为什么转成字符串后还是原来的字符串呢?为什么为什么啊?</font>
- //将排序后的数组变成字符串。
- return String.valueOf(chr);
- }
- //对数组进行排序
- public static void sort(char[] chr)
- {
- chr = clear(chr);
- for(int x = 0;x<chr.length;x++)
- {
- for(int y = x+1;y<chr.length;y++)
- {
- if(chr[x]>chr[y])
- location(chr,x,y);
- }
- }
- }
- //获取小写a-z的字符
- public static char[] clear(char[] chr)
- {
- StringBuilder sb = new StringBuilder();
- for(int x = 0;x<chr.length;x++)
- {
- if((chr[x]>='a' && chr[x]<='z'))
- sb.append(chr[x]);
- }
- String s = sb.toString();
- return s.toCharArray();
- }
- //换位动作。
- public static void location(char[] chr,int x,int y)
- {
- char temp = chr[x];
- chr[x] = chr[y];
- chr[y] = temp;
- }
- }
复制代码 |