パラメータ名はASCIIコードサイズ順にバブルアルゴリズムで実現
4372 ワード
前のブログ署名アルゴリズム署名待ちパラメータフィールド名のASCIIコードサイズに従ってAndroid、JSで実装されたソート方法実装は、システムのapiを利用して実装されています.ここでは、下位アルゴリズムで実装したいと思います.
1. api
String[] data = new String[]{"key", "ba","ba", "ac", "bb","bbc","ccce","ccc"};
Arrays.sort(data);
//System.out.println("compare***" + compare("bb", "bbc"));
//System.out.println("compare***" + compare("ccce", "ccc"));
//data = bubbleSort(data);
for(String i:data){
System.out.println("array i***" + i);
}
=》
I/System.out: array i***ac
array i***ba
array i***ba
array i***bb
array i***bbc
array i***ccc
array i***ccce
array i***key
2.
/**
*
*/
public String[] bubbleSort(String[] array) {
if (array.length == 0)
return array;
for (int i = 0, l = array.length; i < l - 1; i++) {
for (int j = 0; j < l - 1 - i; j++) {
if (compare(array[j], array[j + 1]) == 1) {
String temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
return array;
}
/**
* 2 String
*/
public int compare(String o1, String o2) {
//2
int length = Math.min(o1.length(), o2.length());
for (int i = 0; i < length; i++) {
if (o1.charAt(i) < o2.charAt(i)) {
return -1;
} else if (o1.charAt(i) > o2.charAt(i)) {
return 1;
}
}
// 2 ,
if (o1.length() < o2.length()) {
return -1;
} else if (o1.length() > o2.length()) {
return 1;
}else{
return 0;
}
}
String[] data = new String[]{"key", "ba", "ba", "ac", "bb", "bbc", "ccce", "ccc"};
//Arrays.sort(data);
System.out.println("compare***" + compare("bb", "bbc"));
System.out.println("compare***" + compare("ccce", "ccc"));
data = bubbleSort(data);
for (String i : data) {
System.out.println("array i***" + i);
}
I/System.out: compare***-1
compare***1
array i***ac
array i***ba
array i***ba
array i***bb
array i***bbc
array i***ccc
array i***ccce
array i***key
, compare ( 2 String ).