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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 坚持525 中级黑马   /  2014-10-16 13:14  /  1314 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么那个i变量不减1呢??
  1. import java.util.Arrays;

  2. public class SelectSort {

  3.         /**
  4.          * 选择排序
  5.          */
  6.         public static void main(String[] args) {
  7.                 // TODO Auto-generated method stub
  8.                 int[] arr={1,2,36,363,56,95,12,32,1232,3263};
  9.                 for(int i=0;i<arr.length;i++){
  10.                         for(int j=i+1;j<=arr.length-1;j++){
  11.                                 if(arr[i]>arr[j]){
  12.                                         int temp=arr[i];
  13.                                         arr[i]=arr[j];
  14.                                         arr[j]=temp;
  15.                                 }       
  16.                         }
  17.                 }
  18.                 System.out.println(Arrays.toString(arr));
  19.         }
  20. }
复制代码

7 个回复

倒序浏览
应该要减1的,因为最后一个与自己比就没什么意义了。
回复 使用道具 举报
jacklu 发表于 2014-10-16 23:23
应该要减1的,因为最后一个与自己比就没什么意义了。

那个不用减1的,后面的y,是为了减少比较次数的
回复 使用道具 举报
后面可以减1,楼上说得对,最后一个已经没必要比较了。还有你自己都搞了选择排序,你输出的时候又弄个工具类给数组排序干嘛?不多此一举吗
回复 使用道具 举报
其实你这样编程的格式不太好,你<=后面再来个-1,你可以直接<后面就不要-1了
回复 使用道具 举报
戏言丶 发表于 2014-10-17 16:08
后面可以减1,楼上说得对,最后一个已经没必要比较了。还有你自己都搞了选择排序,你输出的时候又弄个工具 ...

不是的,最后的那个Arrays.toString(str),是打印我排好序的,是自己写的排序,没有用集合类工具的方法
回复 使用道具 举报
bhbhbhbkbjkbjkbj
回复 使用道具 举报
官方 中级黑马 2014-10-30 16:48:23
8#
for (int x=0;x<a.length-1 ;x++ )
                {
                        for (int y=x+1;y<a.length ;y++ )
                        {
                                if (a[x]>a[y])
                                {
                                        a[x]=a[x]+a[y];
                                        a[y]=a[x]-a[y];
                                        a[x]=a[x]-a[y];
                                }
                        }
                }
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马