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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

张大海

中级黑马

  • 黑马币:0

  • 帖子:15

  • 精华:0

© 张大海 中级黑马   /  2013-4-14 15:29  /  1589 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张大海 于 2013-4-14 21:33 编辑
  1. int[] score = { 10,20,30,40,50,60,70};
  2.             //int[] score = { 70,60,50,40,30,2,1};
  3.           //int[] score = {8,12,2,78,35,45,56,69,1,89,57,32,45,78 };
  4.             int i,j;
  5.             for ( i=0;i<score .Length -1;i++)
  6.             {
  7.                 for ( j = 0; j < score.Length - j  - 1;j ++ )
  8.                 {

  9.                     if (score [j ]<score [j +1])
  10.                     {

  11.                         int sum = 0;
  12.                         sum =score [j ];
  13.                         score[j] = score[j + 1];
  14.                         score [j+1]=sum ;
  15.                     
  16.                     }

  17.                 }
  18.             
  19.             }




  20.             for (i = 0; i < score.Length;i++ )
  21.             {
  22.                 Console.WriteLine(score [i ]);
  23.             }
  24.             Console.ReadKey();
复制代码
结果是40 30 20 10 50 60 70 这神马情况???求大神帮忙看下

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

5 个回复

倒序浏览
第七行
“for ( j = 0; j < score.Length - j  - 1;j ++ )”
写错了哦。应为:
“for ( j = 0; j < score.Length - i  - 1;j ++ )”

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
for ( j = 0; j < score.Length - j  - 1;j ++ )改为 for ( j = 0; j < score.Length - i - 1;j ++ )
回复 使用道具 举报
    int[] score = { 10,20,30,40,50,60,70};
                //int[] score = { 70,60,50,40,30,2,1};
              //int[] score = {8,12,2,78,35,45,56,69,1,89,57,32,45,78 };
               
                for (int i=0;i<score .Length -1;i++)  //在内部定义整型变量 i
                {
                    for ( int j = 0; j < score.Length - i - 1;j ++ )//在内部定义整型变量 j ,并且j < score.Length - i - 1   ,主要是这里出错了。。。
                    {

                        if (score [j ]<score [j +1])
                        {

                            int sum = 0;
                            sum =score [j ];
                            score[j] = score[j + 1];
                            score [j+1]=sum ;
                        
                        }

                    }
               
                }




                for (i = 0; i < score.Length;i++ )
                {
                    Console.WriteLine(score [i ]);
                }
                Console.ReadKey();
回复 使用道具 举报
你的里面的循环里面的条件写错了,应该是-i-1;,你写的-j-1;
回复 使用道具 举报
错误他们都已经帮你找出来了,这里给你一个改良版的冒泡排序
            for (int i = 0; i < arr.Length; i++)
            {
                bool flag = true;//标签
                for (int j = 0; j < arr.Length-i-1; j++)//循环冒泡
                {
                    if (arr[j] > arr[j + 1])//如果前一个数比后一个数大,则交换
                    {
                        int temp;
                        temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                        flag = false;//如果发生交换,设定标签的值为false
                    }
                }
                if (flag)//判断标签,当上一个循环中没有数据交换时,说明数组排序已完成,跳出循环。
                {
                    break;
                }
            }
            Console.WriteLine("排序结果:");
            for (int i = 0; i < arr.Length; i++)//循环打印出排序后的数组。
            {
                Console.WriteLine(arr[i]);
            }
            Console.ReadKey();
        }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马