黑马程序员技术交流社区

标题: 反转数组中的所有元素? [打印本页]

作者: weidong10heima    时间: 2016-7-8 07:05
标题: 反转数组中的所有元素?
分析以下需求,并用代码实现:
        (1)编写一个泛形方法,实现指定位置数组元素的交换
        (2)编写一个泛形方法,接收一个任意数组,并反转数组中的所有元素
作者: cat73    时间: 2016-7-8 16:55
本帖最后由 cat73 于 2016-7-8 17:01 编辑

泛型不支持基础数据类型,你可以考虑通过重载实现支持基础数据类型。
  1.     public <T> void flip(T[] array) {
  2.         int i = 0;
  3.         int j = array.length - 1;
  4.         while(i < j) {
  5.             swap(array, i++, j--);
  6.         }
  7.     }
  8.    
  9.     public <T> void swap(T[] array, int i, int j) {
  10.         T t = array[i];
  11.         array[i] = array[j];
  12.         array[j] = t;
  13.     }
复制代码

作者: 怡蓝    时间: 2016-7-8 17:02
好复杂,好复杂啊,好复杂啊啊啊啊啊啊啊啊
作者: longforus    时间: 2016-7-8 17:31
  1. public static <T> T[] swap (T[] list, int p1, int p2) throws ArrayIndexOutOfBoundsException{
  2.         if (p1 < 0 || p1 > list.length - 1) {
  3.             throw new ArrayIndexOutOfBoundsException ("p1 下标越界");
  4.         }
  5.         if (p2 < 0 || p2 > list.length - 1) {
  6.             throw new ArrayIndexOutOfBoundsException ("p2 下标越界");
  7.         }
  8.         T temp = list[p1];
  9.         list[p1] = list[p2];
  10.         list[p2] = temp;
  11.         return list;
  12.     }
  13.     public static <T> T[] inversionArray (T[] arr){
  14.         T temp;
  15.         int n;
  16.         for (int i = 0; i < arr.length / 2; i++) {//每次循环交换前后相对位置的2元素
  17.             n = arr.length-i-1;
  18.             temp = arr[i];
  19.             arr[i] = arr[n];
  20.             arr[n] = temp;
  21.         }
  22.             return arr;
  23.     }
复制代码


未做严格测试哦```我以为是这种




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