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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王舒玮 中级黑马   /  2012-12-14 20:03  /  1418 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package cn.itcast;
/*
* 数组的选择排序
* 原理:如果拿0角标上的元素依次和后面的元素进行比较,
*           第一次内循环结束后,最小值出现在了0角标位置。
*
*/
public class ArrayDemo4 {
// 遍历数组进行排序
  public static void selectSort(int[] arr) {
   for (int i = 0; i < arr.length - 1; i++) {
    for (int j = i + 1; j < arr.length; j++) {//i的0角标和j的1角标比较
     if (arr[i] > arr[j]) {
      int temp = arr[i];// 先把大的数记录下来进行后期比较
      arr[i] = arr[j];// 把小的值j给i,然后再用小的值和其他值再比较
      arr[j] = temp;// 换位置
     }
    }
   }
  }
  //主函数
public static void main(String[] args) {
  // 定义一个数组
  int[] arr = new int[] { 2, 4, 6, 8, 10 };
  // 排序前
  //System.out.println("排序前:" + arr);
  printArray(arr);
  //排序
  selectSort(arr);
  //排序后
  //System.out.println("排序后:"+ arr);
  printArray(arr);
}
//创建遍历数组的功能,方便主函数调用
public static void printArray(int[] arr){
  System.out.print("[");
  for(int k=0;k<arr.length;k++){
   if(k!=arr.length-1){
    System.out.print(arr+",");
   }else{
    System.out.println(arr+"]");
   }
  }
}
}
结果是:[[I@150bd4d,[I@150bd4d,[I@150bd4d,[I@150bd4d,[I@150bd4d]
              [[I@150bd4d,[I@150bd4d,[I@150bd4d,[I@150bd4d,[I@150bd4d]
我知道造成这种结果的原因 但是实在是找不到我代码中哪个步骤有错误造成了这个结果 求解

评分

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

查看全部评分

3 个回复

倒序浏览
/*
* 数组的选择排序
* 原理:如果拿0角标上的元素依次和后面的元素进行比较,
*           第一次内循环结束后,最小值出现在了0角标位置。
*
*/
class ArrayDemo4 {
// 遍历数组进行排序
  public static void selectSort(int[] arr) {
   for (int i = 0; i < arr.length - 1; i++) {
    for (int j = i + 1; j < arr.length; j++) {//i的0角标和j的1角标比较
     if (arr > arr[j]) {
      int temp = arr;// 先把大的数记录下来进行后期比较
      arr = arr[j];// 把小的值j给i,然后再用小的值和其他值再比较
      arr[j] = temp;// 换位置
     }
    }
   }
  }
  //主函数
public static void main(String[] args) {
  // 定义一个数组
  int[] arr = new int[] { 2, 4, 6, 8, 10 };
  // 排序前
  //System.out.println("排序前:" + arr);
  printArray(arr);
  //排序
  selectSort(arr);
  //排序后
  //System.out.println("排序后:"+ arr);
  printArray(arr);
}
//创建遍历数组的功能,方便主函数调用
public static void printArray(int[] arr){
  System.out.print("[");
  for(int k=0;k<arr.length;k++){
   if(k!=arr.length-1){
    System.out.print(arr[k]+",");
   }else{
    System.out.println(arr[k]+"]");
   }
  }
}
}

注意红色地方!!!

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

回复 使用道具 举报
张海涛 发表于 2012-12-14 20:24
/*
* 数组的选择排序
* 原理:如果拿0角标上的元素依次和后面的元素进行比较,

太谢谢你了 终于找到问题根源了
回复 使用道具 举报
路过学习中。。。。{:soso_e121:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马