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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 袭喜悦 中级黑马   /  2013-1-23 17:34  /  1632 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张向辉 于 2013-1-23 19:33 编辑
  1. {
  2. public static void selectSort(int[] arr)
  3. {
  4. for (int x=0 ;x<arr.length ;x++ )
  5. {
  6. for (int y=x+1;y<arr.length-1 ;y++ )
  7. {
  8. if (arr[x]<arr[y])
  9. {
  10. int temp=arr[x];
  11. arr[x]=arr[y];
  12. arr[y]=temp;

  13. }
  14. }
  15. }
  16. }
  17. 为什么按降序排列时输出的结果不正确呢?

复制代码



评分

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

查看全部评分

5 个回复

倒序浏览
循环写的不太对呢,既然y是x+1, 自然是到最后一位,而x应该到倒数第二位,修改后如下:


public class Test
{
        public static void main(String[] args)
        {
                int[] arr={5,1,6,4,2,8,9};
                sort(arr);
                for(int i=0;i<arr.length;i++)
                System.out.print(arr[i]+" ");
        }
        public static void sort(int[] arr)
        {
                for(int x=0;x<arr.length-1;x++)
                        for(int y=x+1;y<arr.length;y++)
                        if(arr[x]<arr[y])
                                {
                                        int tmp=arr[x];
                                        arr[x]=arr[y];
                                        arr[y]=tmp;
                                }
        }
}
已测试,附图:




sort.png (5.06 KB, 下载次数: 29)

sort.png

评分

参与人数 1黑马币 +9 收起 理由
Rancho_Gump + 9 赞一个!

查看全部评分

回复 使用道具 举报
我嫌麻烦,把函数名改了呢,呵呵~ 没关系的吧~
回复 使用道具 举报
陈丽莉 发表于 2013-1-23 17:51
我嫌麻烦,把函数名改了呢,呵呵~ 没关系的吧~

恩恩,3Q,找到问题所在了
回复 使用道具 举报
{

public static void selectSort(int[] arr)
      
{
int temp=0;          //写在这里试试
for (int x=0 ;x<arr.length ;x++ )

{

for (int y=x+1;y<arr.length-1 ;y++ )

{

if (arr[x]<arr[y])

{

temp=arr[x];

arr[x]=arr[y];

arr[y]=temp;

}

}

}

}

为什么按降序排列时输出的结果不正确呢?

回复 使用道具 举报
高浩 发表于 2013-1-23 20:30
{

public static void selectSort(int[] arr)

恩恩。。已经找到问题所在了。。谢了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马