字符串排序

package javastudy;


public class Test4 {
	public static void main(String[] args){
		String s [] = {"dad","bood","bada","Admin","xxx","Good",
				"aete","cc","Ko","Beta","Could","Goodd","Gooda"};
		
		String stemp = null ;
		//下面的是冒泡排序 

		for (int i = 0; i < s.length; i++) {
			for (int j = 0; j < s.length - i - 1; j++) {
				if (stringCmp(s[j], s[j + 1]) > 0) {
					stemp = s[j];
					s[j] = s[j + 1];
					s[j + 1] = stemp;
				}
			}
		}
		
		for (int i=0;i<s.length ;i++){
			System.out.print(s[i]+" ") ;
		}
	}
	/**
	 * A(97),a(65)
	 * @param s1
	 * @param s2
	 * @return >0-->s1>s2
	 */
	public static int stringCmp(String s1, String s2 ){
		int nResult = s1.length() - s2.length() ;;
		int nLen = Math.min(s1.length(), s2.length()) ;
		int nCharOrder1, nCharOrder2;
		char aChar1 [] = s1.toCharArray();
		char aChar2 [] = s2.toCharArray();
	
		for (int i = 0; i < nLen; i++) {
			//如果在nLen内有char不一样(包括同一char,一个大写一个小写,和两个不同的char)
			if (aChar1[i] != aChar2[i]) {
				nCharOrder1 = aChar1[i] > 96 ? aChar1[i] - 96 : aChar1[i] - 64;
				nCharOrder2 = aChar2[i] > 96 ? aChar2[i] - 96 : aChar2[i] - 64;
				if (nCharOrder1 != nCharOrder2) {// 不同的char(这里不包括大小写,如A ,a)
					nResult = nCharOrder1 - nCharOrder2;
					break;
				} else {
					nResult = aChar1[i] - aChar2[i]; // 相同 的char时(A,a)
					break;
				}
			}
			//如果在nLen 内一直没有不同的char
		}
		
		return nResult ;
	}
}

 结果

 Admin aete Beta bada bood Could cc dad Good Gooda Goodd Ko xxx 

posted @ 2015-07-19 15:22  chuiyuan  阅读(192)  评论(0编辑  收藏  举报