/*查找中文序列str所对应的表中的脚标,存入sbd中
并返回sbd数组的实际存储长度k*/
int k = findIndex(table,str,sbd);
int len = str.length;
int[] aa = sortIndex(sbd,k);//接收排序后的值为脚标的数组
sortCh(aa,len,table);
}
public static int findIndex(String[] table,String str[],int[] sbd)
{
/*查找中文序列str所对应的表中的脚标,存入sbd中
并返回sbd数组的实际存储长度k
*/
int len = str.length;
int k = 0;
for (int i=0;i<len ;i++)
for (int j=0;j<10 ;j++ )
if(table[j].compareTo(str)==0)
sbd[k++]=j;
return k;
}
public static int[] sortIndex(int[] str,int len)
{
//对长度为len的存储脚标的数组str进行排序
for (int i=0;i<len-1 ;i++ )
{
int flag = i;//用于标记每次循环比较时最小字符串的脚标
int temp = -1;
for (int j=i+1;j<len ;j++ )
if(str[flag]>str[j])//求小值
flag=j;
if(flag!=i)
{
temp = str;
str=str[flag];
str[flag]=temp;
}
}
return str;
}
public static void sortCh(int[] aa,int len,String[] strArr)
{
/*根据排好序的脚标数组aa查表,将strArr表中脚标为aa的字符串
存入到StringBuilder sbd之中,再将其转换成字符串str打印输出
*/
StringBuilder sbd = new StringBuilder();
for (int i=0;i<len ;i++)
sbd.append(strArr[aa]);
//String str = sbd.toString();
System.out.println(sbd);
}
}