A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李月 中级黑马   /  2012-5-8 16:06  /  2397 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

                                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
没有排序呢?看了半天代码,也不知道问题在哪?
求解决。

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 选择排序循环完一次出现在头角标,冒泡出现.

查看全部评分

6 个回复

倒序浏览
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

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
                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);
                }

        }
回复 使用道具 举报

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.         }
复制代码
回复 使用道具 举报
     这个是选择排序      
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]);
         }
                            
            }
     
}
     

回复 使用道具 举报
搞定,用选择排序:
  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. }
复制代码
回复 使用道具 举报
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]);
                }


        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马