美文网首页
如何将数组元素逆序

如何将数组元素逆序

作者: michael_fang | 来源:发表于2018-05-19 19:06 被阅读27次

项目中我们会遇到需要将数组元素逆序输出的情形,可以有好几种方法完成这个需求:
1、方法一:逆序遍历数组元素并将元素放入新数组,分析时间复杂度是O(n),空间复杂度是o(n)

        for(Integer i = sqList.size() - 1; i >= 0; i --) {
            reversedArray.add(sqList.get(i));
        }

2、方法二:扫描数组元素的前半部分元素,将元素sqListi与其余后半部分对应的元素sqList[sqList.length - i - 1]进行交换,时间复杂度为O(n/2),不需要额外的空间

private static <T> void reverse(List<T> sqList) {
        if (sqList == null || sqList.size() < 1) {
            return;
        }
        T temp = null;
        Integer size = sqList.size();
        for (Integer j = 0; j < size >> 1; j++) {
            temp = sqList.get(j);
            sqList.set(j, sqList.get(size - j - 1));
            sqList.set(sqList.size() - j - 1, temp);
        }
}

3、方法三:Collections.reverse(sqList),jdk内部源码实现如下,可以看到jdk源码的实现方式和方法二的思想是一致的,都是交换相应位置上的元素。所以Java中若数组元素逆序直接调用Collections.reverse方法即可。

  public static void reverse(List<?> list) {
        int size = list.size();
        if (size < REVERSE_THRESHOLD || list instanceof RandomAccess) {
            for (int i=0, mid=size>>1, j=size-1; i<mid; i++, j--)
                swap(list, i, j);
        } else {
            // instead of using a raw type here, it's possible to capture
            // the wildcard but it will require a call to a supplementary
            // private method
            ListIterator fwd = list.listIterator();
            ListIterator rev = list.listIterator(size);
            for (int i=0, mid=list.size()>>1; i<mid; i++) {
                Object tmp = fwd.next();
                fwd.set(rev.previous());
                rev.set(tmp);
            }
        }
 }

相关文章

  • 如何将数组元素逆序

    项目中我们会遇到需要将数组元素逆序输出的情形,可以有好几种方法完成这个需求:1、方法一:逆序遍历数组元素并将元素放...

  • 数组逆序

    数组逆序: 数组中的元素进行,位置上的交换 逆序实现思想:数组最远端位置交换 数组的指针思想:就是数组的索引 大指...

  • iOS·数组元素逆序方案

    已知: 求解:strArr的反序数组strRevArr,即元素顺序分别为e,d,c,b,a。(这个逆序的意思只是针...

  • 数组

    数组 初始化数组 数组名是一个地址的常量,代表数组中首元素的地址 数组逆序 python 直接[::-1] 好香?...

  • Java 数组的排序、逆序

    数组的排序、逆序测试数据 数组选择排序 数组冒泡排序 数组逆序

  • Swift 数组3: for遍历

    1. 遍历所有元素 2. enumerated: 遍历数组的下标和元素 3. reversed: 逆序遍历 4. ...

  • 学习笔记(一)

    1.将数组内的元素逆序 : 输出reversedArray:( 3, 2, 1) 2.在可变数组中插入一个数组 输...

  • 数组常用API

    1.reverse() 将数组的元素颠倒过来,也就是变成逆序,此方法会修改原数组。 2.sort() 默认对数组进...

  • 数据结构--希尔排序

    希尔排序 思想:让数组越来越有序,不能只处理相邻的逆序对对元素间距为n/2的所有数组做插入排序对元素间距为n/4的...

  • day08

    1.了解ASCII表 2.数组元素的逆序1.定义两个索引变量start值为0,变量end值为数组长度减去1(即数组...

网友评论

      本文标题:如何将数组元素逆序

      本文链接:https://www.haomeiwen.com/subject/zsjadftx.html