【分析】字符串排序程序设计

字符串排序程序设计

编写一个字符串排序程序,对一个字符串中的数值进行从小到大的排序

例如字符串“36 9 78 29 -7 20”

要求变成    “ -7 9 20 29 36 78 ”

目录

字符串排序程序设计

编写一个字符串排序程序,对一个字符串中的数值进行从小到大的排序


需求分析:字符串数值排序
观察: 字符串使用空格来对数值进行分割
主要问题:字符串不能比较数字大小
解决方案将字符串数组转换成整型数组进行排序
优化:排序方法可以自己写个冒泡排序,快速排序等等,这里直接使用Arrays类中的sort()方法将转换后的数组进行排序
完善:利用StringBuffer类的append()方法将数组元素和元素连接成字符串
 
知识点链接:StringBuffer append() 和 String 类不同的是,StringBuffer类的对象能够被多次的修改,
   并且不产生新的未使用对象
 * public class Test{
      public static void main(String args[]){
        StringBuffer sBuffer = new StringBuffer("欢迎一起学习:我是");
        sBuffer.append("cmd");
        sBuffers.append("c");
        sBuffer.append("h");
        System.out.println(sBuffer);  
      }
    }
    输出结果:欢迎一起学习:我是cmdch
/*知识点:
 * 字符串赋值:String str = "abc";

is equivalent to: 

     char data[] = {'a', 'b', 'c'};
     String str = new String(data);
*/

 需要哪些功能,总的调用方法

public static String sortStringNumber(String numStr) {
	//将字符串变成字符串数组
	String[] str_arr=stringToArray(numStr);
	//将字符串数组变成int数组
	int[] num_arr=toIntArray(str_arr);
	//对int数组进行排序
	mySortArray(num_arr);
	//将排序后的int数组变成字符串
	String temp=arrayToString(num_arr);
	return temp;
}

将排序后的int数组变成字符串

public static String arrayToString(int[] num_arr) {
	StringBuffer sb=new StringBuffer();
	for(int x=0;x

排序算法 (Arrays.sort)

public static void mySortArray(int[] num_arr) {
	Arrays.sort(num_arr);
//这里就直接使用Arrays里的sort方法排序,当然也可以用其他排序方法例如bubblesort
}

 字符串数组变成int数组

public static int[] toIntArray(String[] str_arr) {
	int[] arr=new int[str_arr.length];
	//表示申明一个整形一维数组arr,同时分配str_arr.length个整数大小的空间,
	//具体大小要看当前系统整形所占字节大小,一般是4个字节,所以4*10=40个字节
	for(int i=0;i

字符串变为字符串数组 

public static String[] stringToArray(String numStr) {
	String[] str_arr=numStr.split(SPACE_SEPARATOR);
	/*
	 为了去掉空格的同时分离,这里使用了split函数
	 *类似于找一个参照字母或者符号,将它替换为分离符号的一种分离方法,
	 *特别注意的是结果数组中不包含尾随的空字符串
	这里是解释举个栗子
	The string "boo:and:foo", for example, yields the following results with these expressions: 

	Regex           Result

	:       { "boo", "and", "foo" }} 
	o       { "b", "", ":and:f" }} 
	*/ 

	return str_arr;
}

 

 


package WrapperString;
import java.util.Arrays;
public class WrapperString {
private static final String SPACE_SEPARATOR=" ";
public static void main(String[] args) {
	String numStr ="20 78 9 88 36 29";
	System.out.println(numStr);
	numStr=sortStringNumber(numStr);
	System.out.println(numStr.toString());
}
public static String sortStringNumber(String numStr) {
	//将字符串变成字符串数组
	String[] str_arr=stringToArray(numStr);
	//将字符串数组变成int数组
	int[] num_arr=toIntArray(str_arr);
	//对int数组进行排序
	mySortArray(num_arr);
	//将排序后的int数组变成字符串
	String temp=arrayToString(num_arr);
	return temp;
}
public static String arrayToString(int[] num_arr) {
	StringBuffer sb=new StringBuffer();
	for(int x=0;x

 

你可能感兴趣的:(Java)