排序问题 字符A,c,b,C,B,a怎么排序成A,a,B,b,C,c 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 冒泡排序 public static void sortCharArray(char[] c) { for(int i=0;i<c.length-1;i++) for(int j=i+1;j<c.length;j++) { if(compareCharIgnoreCase(c[i],c[j])==1) { char cc=c[i]; c[i]=c[j]; c[j]=cc; } } } private static int compareCharIgnoreCase(char c1,char c2)//判断2个字符的关系.忽略大小写 { if(c1==c2) return 0; int offc1=(c1-'A')%32; int offc2=(c2-'A')%32; if(offc1!=offc2) return offc1>offc2?1:-1; return c1>c2?1:-1; } public class test{ public static void main(String args[]){ char in[]={'A','c','b','C','B','a'}; char low[]=new char[3]; char up[]=new char[3]; char temp; int l,u; l=0;u=0; for(int i=0;i<6;i++){//按大小写分成两个数组 if(Character.isLowerCase(in[i])){ low[l]=in[i]; l++; } else{ up[u]=in[i]; u++; } } for(int i=0;i<2;i++){//数组排序 for(int j=0;j<2-i;j++){ if(low[j]>low[j+1]){ temp=low[j]; low[j]=low[j+1]; low[j+1]=temp; } if(up[j]>up[j+1]){ temp=up[j]; up[j]=up[j+1]; up[j+1]=temp; } } } for(int i=0;i<3;i++){//输出 System.out.print(up[i]); System.out.print(low[i]); } }} public class test{ public static void main(String args[]){ char in[]={'A','c','b','C','B','a'}; char low[]=new char[3]; char up[]=new char[3]; char temp; int l,u; l=0;u=0; for(int i=0;i<6;i++){//按大小写分成两个数组 if(Character.isLowerCase(in[i])){ low[l]=in[i]; l++; } else{ up[u]=in[i]; u++; } } for(int i=0;i<2;i++){//数组排序 for(int j=0;j<2-i;j++){ if(low[j]>low[j+1]){ temp=low[j]; low[j]=low[j+1]; low[j+1]=temp; } if(up[j]>up[j+1]){ temp=up[j]; up[j]=up[j+1]; up[j+1]=temp; } } } for(int i=0;i<3;i++){//输出 System.out.print(up[i]); System.out.print(low[i]); } }} 思路:先把所有字母转换成大写或者小写,再排序,然后把临近相同的靠后的那个转换成小写。import java.util.*;/** * @author Administrator * */public class Test { /** * 把数组里小写转换成大写 * * @param arr * @return */ public static String[] toUpperCase(String[] arr) { for (int i = 0; i < arr.length; i++) { arr[i] = arr[i].toUpperCase(); } return arr; } /** * 若前后2个元素equals,那么把后面那个转换成小写 * * @param arr * @return */ public static String[] upCaseToLower(String[] arr) { for (int i = 0; i < arr.length - 1; i++) { if (arr[i].equals(arr[i + 1])) { arr[i + 1] = arr[i + 1].toLowerCase(); } } return arr; } public static void main(String[] args) { // TODO Auto-generated method stub String arr[] = { "A", "c", "b", "C", "B", "a" }; String[] upCaseArr = toUpperCase(arr); // 排序 Arrays.sort(upCaseArr); String afterSort[] = upCaseToLower(upCaseArr); for (String s : afterSort) { System.out.print(s + " "); } }}上面的代码是用的String类型的数组,业可用Character类型,思路一样的。 JSP不定项选择,为什么实现不了? 求一个排列组会问题,条件为知道一个总分,和多少投票? 大家好,我做的JAVA IDE初步完成了,但是论文不知怎么样写,请各位提点建议吗? 谁知道五子棋和围棋的判赢的算法!!!!! Java调用DLL方法多多... 再问:“共军”和“ZF”多谢了,不过还有小问题 关于Swing中的刷新问题 请问Java能调用动态连接库(DLL)吗? 关于socket类的问题,急急急! 各位大哥请帮忙!!!!!!!!!!! 如何用properties做一个设置参数的对话框 Java中内部类是什么东东
{
for(int i=0;i<c.length-1;i++)
for(int j=i+1;j<c.length;j++) {
if(compareCharIgnoreCase(c[i],c[j])==1)
{
char cc=c[i];
c[i]=c[j];
c[j]=cc;
}
}
}
private static int compareCharIgnoreCase(char c1,char c2)//判断2个字符的关系.忽略大小写
{
if(c1==c2)
return 0;
int offc1=(c1-'A')%32;
int offc2=(c2-'A')%32;
if(offc1!=offc2)
return offc1>offc2?1:-1;
return c1>c2?1:-1;
}
public static void main(String args[]){
char in[]={'A','c','b','C','B','a'};
char low[]=new char[3];
char up[]=new char[3];
char temp;
int l,u;
l=0;u=0;
for(int i=0;i<6;i++){//按大小写分成两个数组
if(Character.isLowerCase(in[i])){
low[l]=in[i];
l++;
}
else{
up[u]=in[i];
u++;
}
}
for(int i=0;i<2;i++){//数组排序
for(int j=0;j<2-i;j++){
if(low[j]>low[j+1]){
temp=low[j];
low[j]=low[j+1];
low[j+1]=temp;
}
if(up[j]>up[j+1]){
temp=up[j];
up[j]=up[j+1];
up[j+1]=temp;
}
}
}
for(int i=0;i<3;i++){//输出
System.out.print(up[i]);
System.out.print(low[i]);
}
}
}
public class test{
public static void main(String args[]){
char in[]={'A','c','b','C','B','a'};
char low[]=new char[3];
char up[]=new char[3];
char temp;
int l,u;
l=0;u=0;
for(int i=0;i<6;i++){//按大小写分成两个数组
if(Character.isLowerCase(in[i])){
low[l]=in[i];
l++;
}
else{
up[u]=in[i];
u++;
}
}
for(int i=0;i<2;i++){//数组排序
for(int j=0;j<2-i;j++){
if(low[j]>low[j+1]){
temp=low[j];
low[j]=low[j+1];
low[j+1]=temp;
}
if(up[j]>up[j+1]){
temp=up[j];
up[j]=up[j+1];
up[j+1]=temp;
}
}
}
for(int i=0;i<3;i++){//输出
System.out.print(up[i]);
System.out.print(low[i]);
}
}
}
* @author Administrator
*
*/
public class Test {
/**
* 把数组里小写转换成大写
*
* @param arr
* @return
*/
public static String[] toUpperCase(String[] arr) {
for (int i = 0; i < arr.length; i++) {
arr[i] = arr[i].toUpperCase();
}
return arr;
} /**
* 若前后2个元素equals,那么把后面那个转换成小写
*
* @param arr
* @return
*/
public static String[] upCaseToLower(String[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
if (arr[i].equals(arr[i + 1])) {
arr[i + 1] = arr[i + 1].toLowerCase();
}
}
return arr;
} public static void main(String[] args) {
// TODO Auto-generated method stub
String arr[] = { "A", "c", "b", "C", "B", "a" };
String[] upCaseArr = toUpperCase(arr);
// 排序
Arrays.sort(upCaseArr);
String afterSort[] = upCaseToLower(upCaseArr);
for (String s : afterSort) {
System.out.print(s + " ");
}
}}上面的代码是用的String类型的数组,业可用Character类型,思路一样的。