java 用冒泡排序法排序字符串数组?

2020-05-18 科技 120阅读
@org.junit.Test
public void b(){
String[] strs={"avcd","bdce","avcdf","cced","bdce"};
for (int i = 0; i < strs.length; i++) {
//第一个字符的ascii码大,放前面
for (int j = i+1; j < strs.length; j++) {
int num=0;
compare(strs, i,j, num);
}

}

for (String string : strs) {
System.err.println(string);
}
}
/**
 * @param strs
 * @param i
 * @param num
 */
private void compare(String[] strs, int i,int j, int num) {
//判断2个字符串谁的长度最小,则以当前长度作为num+1的最大标准
if (strs[i].length()>=strs[j].length()) {
if (num+1<=strs[j].length()) {
if (strs[j].charAt(num)>strs[i].charAt(num)) {
String temp=strs[i];
strs[i]=strs[j];
strs[j]=temp;
//若相等,则判断第二个
}else if(strs[j].charAt(num)==strs[i].charAt(num)){
num++;
compare(strs, i,j, num);
}
}
}else{
if (num+1<=strs[i].length()) {
if (strs[j].charAt(num)>strs[i].charAt(num)) {
String temp=strs[i];
strs[i]=strs[j];
strs[j]=temp;
//若相等,则判断第二个
}else if(strs[j].charAt(num)==strs[i].charAt(num)){
num++;
compare(strs, i,j, num);
}
}else{
//表示当前字符串内容都一致,strs[j]的长度大。 则放前面。
String temp=strs[i];
strs[i]=strs[j];
strs[j]=temp;
}
}
}
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com