• 数组转置


    首尾交换  

    思路一:开辟一个等长的数组,原始数组反转存入

    public static int[] reverse(int arr[])

    {

      {

        int temp = new int[arr.length];

        int foot = 0;

        for(int x=arr.length - 1; x>=0; x--)

        {

          temp[foot++]= arr[x];

        }

      return temp;

      }

    }

    最大问题在于此类方法开辟了两块堆内存空间   空间浪费    内存占用量高  查sql语句    cpu高  查算法

    思路二:在一个数组上完成数组反转

    原始数组  1 2 3 4 5 6 7 8 9

    第一次  1和9交换

    第二次 2和8交换

    第三次 3和7交换

    第四次 4和6交换 5不做任何改变    共转了数组长度/2次

    public static void reverse (int arr[])

    {

      int center = arr.length/2;

      int head = 0 ;    头部

      int tail = arr.length - 1 ;   尾部

      for(int x = 0;x<center ;x++)

      {

        int temp = arr[head];

        arr[head] = arr[tail]

        arr[tail] = temp ;

        head ++;

        tail--;

      }

    }

    二维数组转置

    public static void reverse(int arr[] [])

    {

      for(int x = 0;x<arr.length;x++)

      {

        for(int y = x;y<arr[x].length;y++)

        { 

          if(x!=y)

          {

            int temp = arr[x][y];

            arr[x][y]=arr[y][x];

            arr[y][x]=temp;

          }

        }

      }

    }

  • 相关阅读:
    MySQL中的MRR和BKA
    MySQL中的BNL优化器
    MySQL中索引
    MySQL中的两种排序方式: index和filesort
    设计模式之观察者模式
    设计模式之策略模式
    设计模式之模板方法
    java和JavaScript的区别
    HTML 简介--from app (W3)
    与代码同行-五年计划
  • 原文地址:https://www.cnblogs.com/123talents/p/7460188.html
Copyright © 2020-2023  润新知