黑马程序员技术交流社区

标题: 字符数组排序 [打印本页]

作者: 李月    时间: 2012-5-8 16:06
标题: 字符数组排序
                                char[] ch={'b','e','g','a','h'};
                for(int i=0;i<ch.length;i++)
                {
                        for(int n=1;n<ch.length;n++)
                        {
                                if(ch[i]>ch[n])
                                {
                                        char a=ch[i];
                                        ch[i]=ch[n];
                                        ch[n]=a;
                                }
                        }
                }
                for(int i=0;i<ch.length;i++)
                {
                        System.out.print(ch[i]);
                }


我写的排序方法,怎么打印结果是:ahgeb
没有排序呢?看了半天代码,也不知道问题在哪?
求解决。
作者: 李啸    时间: 2012-5-8 16:22
char[] ch = { 'b', 'e', 'g', 'a', 'h' };
  for (int i = 0; i < ch.length; i++) {
   for (int n = i+1; n < ch.length; n++) {
    if (ch[i] > ch[n]) {
     char a = ch[i];
     ch[i] = ch[n];
     ch[n] = a;
    }
   }
  }
  for (int i = 0; i < ch.length; i++) {
   System.out.print(ch[i]);
  }
因为你每次都要去跟前一个去比较所以在内层循环中需要外层循环遍历+1
作者: 魏涞    时间: 2012-5-8 16:27
                char[] ch = { 'b', 'e', 'g', 'a', 'h' };
                for (int i = 0; i < ch.length; i++) {
                        for (int n = i+1; n < ch.length; n++) { //这里的内层循环有问题,每次比较为当前待比较字符的后一个字符进行比较
                                if (ch > ch[n]) {
                                        char a = ch;
                                        ch = ch[n];
                                        ch[n] = a;
                                }
                        }
                }
                for (int i = 0; i < ch.length; i++) {
                        System.out.print(ch);
                }

        }
作者: 邱俊杰    时间: 2012-5-8 16:27
标题: 1
  1. char[] ch = { 'b', 'e', 'g', 'a', 'h' };
  2.                 for (int i = 0; i < ch.length; i++) {
  3.                         for (int n = i+1; n < ch.length; n++) {//这里有问题了、应该是加1,冒泡排序,当你第二遍进来的时候不应该是1,应该是2了
  4.                                 if (ch[i] > ch[n]) {                         //
  5.                                         char a = ch[i];
  6.                                         ch[i] = ch[n];
  7.                                         ch[n] = a;
  8.                                 }
  9.                         }
  10.                 }
  11.                 for (int z = 0; z < ch.length; z++) {
  12.                         System.out.print(ch[z]);
  13.                 }
  14.         }
复制代码

作者: 郭振    时间: 2012-5-8 16:30
     这个是选择排序      
class Test
{
    public static void main(String[] args)
        {
             char[] ch={'b','e','g','a','h'};
        
             for(int i=0;i<ch.length-1;i++)
         {
                 for(int n=i+1;n<ch.length;n++)
                 {
                         if(ch[i]>ch[n])
                         {
                                char a=ch[i];
                                 ch[i]=ch[n];
                                 ch[n]=a;
                         }
                 }
         }
         for(int i=0;i<ch.length;i++)
         {
                 System.out.print(ch[i]);
         }
                            
            }
     
}
     


作者: 隋营营    时间: 2012-5-8 16:35
搞定,用选择排序:
  1. public class Testext {
  2.         public static void main(String[] args) throws Exception {
  3.                 char[] ch = { 'b', 'e', 'g', 'a', 'h' };
  4.                 char temp;
  5.                 for (int i = 0; i < ch.length; i++) {
  6.                         int tag = i;
  7.                         for (int j = i + 1; j < ch.length; j++) {
  8.                                 if (ch[j] < ch[tag]) {
  9.                                         tag = j;
  10.                                 }
  11.                         }
  12.                         if (i != tag) {
  13.                                 temp = ch[i];
  14.                                 ch[i] = ch[tag];
  15.                                 ch[tag] = temp;
  16.                         }
  17.                 }
  18.                 for (int i = 0; i < ch.length; i++) {
  19.                         System.out.println(ch[i]);
  20.                 }

  21.         }
  22. }
复制代码

作者: 韩慧阳    时间: 2012-5-8 16:41
class  Px
{
        public static void main(String[] args)
        {
                   char[] ch={'b','e','g','a','h'};
                for(int i=0;i<ch.length;i++)
                {
                        for(int n=i+1;n<ch.length;n++)//内循环错了
                        {
                                if(ch[i]>ch[n])
                                {
                                        char a=ch[i];
                                        ch[i]=ch[n];
                                        ch[n]=a;
                                }
                        }
                }
                for(int i=0;i<ch.length;i++)
                {
                        System.out.print(ch[i]);
                }


        }
}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2