黑马程序员技术交流社区

标题: 分享代码:数组元素反转 [打印本页]

作者: 丁桂松    时间: 2012-5-28 15:48
标题: 分享代码:数组元素反转


  1. public class  ReverseArray {

  2.         /**
  3.          * @定义一个函数,将数组中所有元素反转。例如:{1, 2, 3} 反转后为 {3, 2, 1}。
  4.          */
  5.         public static void main(String[] args) {
  6.                 // 创建一个数组
  7.                 int array[] = { 1, 2, 3, 4, 5, 6, 7, 8 };
  8.                 //调用反转数组的方法将数组反转
  9.                 reverseArray(array);
  10.                 //输出反转以后的数组
  11.                 printArray(array);
  12.         }
  13.         /*
  14.          *思路:
  15.          *        把数组最后一个元素与第一个元素交换,倒数第二个元素与第二个元素交换,依次类推.直到把所有数组中的元素反转替换
  16.          *         反转排序是对数组两边的元素进行替换,所以只需要循环数组长度的半数,如:数组的长度为7,只需要循环3次,就可以了
  17.          * */
  18.         static void reverseArray(int arr[]) {                                  //数组的反转排序
  19.                 for (int i = 0; i < arr.length / 2; i++) {                //循环length/2次,每次交换数组中的元素
  20.                         int temp = arr[i];
  21.                         arr[i] = arr[arr.length - 1 - i];
  22.                         arr[arr.length - 1 - i] = temp;

  23.                 }
  24.         }
  25.        
  26.         //反转数组中的元素,并创建一个新的数组,对新数组进行赋值,将新数组的结果输出
  27.         static void reverseArray1(int arr[]){
  28.                         int a [] = new int [arr.length];
  29.                         //计数器思想
  30.                         int count =0;
  31.                         for (int i = arr.length - 1; i >= 0; i--){
  32.                                 a[count]=arr[i];
  33.                                 count ++;
  34.                         }
  35.                         System.out.print("[");
  36.                         for(int i =0;i<a.length;i++){                                //遍历数组中的每个元素
  37.                                 //判断角标是不是最大角标,如果不是就打印元素和逗号,如果是就打印元素和"]"号
  38.                                 if(i!=a.length-1)
  39.                                 System.out.print(a[i]+",");
  40.                                 else {
  41.                                 System.out.print(a[i]+"]");
  42.                                 }
  43.                         }
  44.                 }
  45.        
  46.         static void printArray(int arr[]) {                         // 输出数组的方法
  47.                 System.out.print("{");                                                 // 首次打印左边中括号
  48.                 for (int i = 0; i < arr.length; i++) {                 // 遍历数组的角标
  49.                         if (i != arr.length - 1) {                                // 如果角标不是最后一位角标,就打印元素和逗号
  50.                                 System.out.print(arr[i] + ", ");
  51.                         } else {                                                                 // 否则(角标是最后一位角标),就打印元素并继续打印右边中括号
  52.                                 System.out.print(arr[i] + "}");
  53.                         }
  54.                         //把上面的if .. else语句可以改写成下面的三元运算符形式
  55.                         //System.out.print(i==arr.length-1?arr[i]+"}":arr[i]+",");
  56.                 }
  57.         }
  58. }
复制代码





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