黑马程序员技术交流社区

标题: 选择排序程序中的小问题 急求解 [打印本页]

作者: 王舒玮    时间: 2012-12-14 20:03
标题: 选择排序程序中的小问题 急求解
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]
我知道造成这种结果的原因 但是实在是找不到我代码中哪个步骤有错误造成了这个结果 求解

作者: 张海涛    时间: 2012-12-14 20:24
/*
* 数组的选择排序
* 原理:如果拿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]+"]");
   }
  }
}
}

注意红色地方!!!


作者: 王舒玮    时间: 2012-12-14 21:09
张海涛 发表于 2012-12-14 20:24
/*
* 数组的选择排序
* 原理:如果拿0角标上的元素依次和后面的元素进行比较,

太谢谢你了 终于找到问题根源了
作者: luobo    时间: 2012-12-17 16:41
路过学习中。。。。{:soso_e121:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2