黑马程序员技术交流社区

标题: 数组输出问题 [打印本页]

作者: 龚建锋    时间: 2012-7-25 23:47
标题: 数组输出问题
public class ArraysBianLi {

public static void main(String[] args) {

  int[] arr = { 1, 2, 3, 4, 53, 45, 78, 12 };

  System.out.print("正的数组"+"{");

  for (int i = 0; i < arr.length - 1; i++) {

   System.out.print(arr[i] + ",");
  }

  System.out.print(arr[arr.length - 1] + "}");
  
}

}
/*
上面是一个遍历并输出数组每个元素的小程序(运行结果如图1),
能否实现数组倒序输出,如{12,78,45,53,4,3,2,1}
*/

图1.jpg (18.29 KB, 下载次数: 160)

顺序输出数组

顺序输出数组

作者: 王志明    时间: 2012-7-25 23:52
//倒序很简单,遍历数组下标从最后一个开始就可以,代码如下
for (int i = arr.length - 1; i >= 0; i--) {
   System.out.print(arr + ",");
}

作者: 肖琦    时间: 2012-7-26 00:42

  1. public class Test4 {
  2. public static void sort(int[] arr, boolean up) {
  3.   for (int i = 0; i < arr.length - 1; i++) {
  4.    for (int j = i + 1; j < arr.length; j++) {
  5.     if (up ? arr[j] < arr[i] : arr[j] > arr[i]) {
  6.      int temp = arr[i];
  7.      arr[i] = arr[j];
  8.      arr[j] = temp;
  9.     }
  10.    }
  11.   }
  12. }
  13. public static void main(String[] args) {
  14.   int[] arr = { 12, 78, 45, 53, 4, 3, 2, 1 };
  15.   sort(arr, true);
  16.   System.out.println("升序排列:");
  17.   for (int i : arr) {
  18.    System.out.print(i + "\t");
  19.   }
  20.   sort(arr, false);
  21.   System.out.println("\n降序排列:");
  22.   for (int i : arr) {
  23.    System.out.print(i + "\t");
  24.   }
  25. }
  26. }
复制代码
以上是插入排序,升序降序怎么排都行
希望对你有所帮助....

作者: 曹俊    时间: 2012-7-26 02:15
楼主:解决这个倒序得先有思路,下面我将我得思路和代码奉供你参考,希望能帮你解决问题!
首先思路:
1,反转其实就是头尾角标的元素进行位置的置换。
2,然后让头角标自增,尾角标自减,在继续位置转换。
3,依次类推,知道头角标和尾角标相等时大于就结束。
代码如下:

作者: 李菁    时间: 2012-7-26 10:57
public class Test2 {
        public static void main(String[] args) {
                int[] a={1,4,5,2,3,8};
                for(int i=a.length-1;i>=0;i--){  倒序数组只需要在遍历时把条件反过来就可以。
                                                           从数组的最大元素开始遍历,每次减1,直到数组的第一个元素

                        System.out.print(a+",");
                }
        }
}
作者: 李菁    时间: 2012-7-26 10:59
倒序结果

aa.jpg (9.71 KB, 下载次数: 197)

aa.jpg

作者: 郑正华    时间: 2012-7-26 11:26
本帖最后由 郑正华 于 2012-7-26 11:28 编辑

楼主,小弟给您提供一个选择排序的代码吧~
public class ArraysBianLi {
        public static void main(String[] args) {
                   int[] arr = { 12, 78, 45, 53, 4, 3 ,2 , 1};
--------------------------------------------------------------------------------            
                   for (int i = 0; i < arr.length - 1; i++) {
                                for (int j = i + 1; j < arr.length; j++) {
                                        if (arr < arr[j]) {
                                                int temp = arr;                               ←您只需添加这里面的代码即可~祝您学习愉快!
                                                arr = arr[j];
                                                arr[j] = temp;
                                         }
                                }
                    }
----------------------------------------------------------------------------------
                    System.out.print("正的数组" + "{");
                    for (int i = 0; i < arr.length - 1; i++) {
                              System.out.print(arr + ",");
                    }
                  System.out.print(arr[arr.length - 1] + "}");
        }
}

作者: 姬仁贵    时间: 2012-7-26 17:05
这个简单呀,你打印的就是将数组有前往后遍历一边,

如果你想打印出你说的那样就需要讲数组由最后一个角标向前打印就行了:



讲遍历数组的for循环改为for(int i=a.length-1;i>=0;i--)就行了。

作者: 黑马陈旭东    时间: 2012-7-26 18:15
public class ArraysBianLi {

public static void main(String[] args) {

  int[] arr = { 1, 2, 3, 4, 53, 45, 78, 12 };

  System.out.print("正的数组"+"{");

  for (int i = 0; i < arr.length - 1; i++) { //把for循环的条件换一下,从数组的最高位开始输出for(int i = arr.legth-1 ; i >0 ; i--)
   System.out.print(arr + ",");
  }

  System.out.print(arr[arr.length - 1] + "}");
  
}

}





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