功能增加一倍的时间数组任意数量的大小? [英] function to double size of array arbitrary number of times?

查看:125
本文介绍了功能增加一倍的时间数组任意数量的大小?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图让这个函数来创建重新排列是2个数组参数的大小,内容复制到新的数组,并为数组下半年,做2 *价值创造新价值在数组的前半部分,然后删除原始数组。重复此过程中指定的次数,然后返回新的数组。我觉得我有正确的算法下来,但我的code不工作。请帮助!

 为int * ArrayDynamicAllocation(int数组[],诠释大小,诠释号)
{
    为int * new_array = NULL;    的for(int i = 0; I<一些-1;我++)
    {
        new_array =新INT [尺寸* 2];
        对于(INT J = 0; J<大小-1; J ++)
        {
            new_array [J] =阵列[J]。
            new_array [J +大小] = 2 *阵列[J]。
        }
        阵列= new_array;
        删除[]数组;
        大小= * 2;
    }
    返回new_array;
}

这是示例的输出是,如果我的信息来把我的作用是
    INT ARR [2] = {0,1};
    ARRAY_SIZE = 2;
    数= 3;
我希望它输出0 1 0 2 0 2 0 4 0 2 0 4 0 4 0 8


解决方案

 为int * ArrayDynamicAllocation(int数组[],诠释大小,诠释号)
{
   为int * new_array = NULL;
   为int * tmp_array =新的INT [array.length()];
   对于(INT K = 0; K< array.length(); K ++)//初始阵列复制。
       tmp_array [K] =阵列[K];   的for(int i = 0; I<数;我++)//数组范围0到n-1
   {
      new_array =新INT [尺寸* 2];
      对于(INT J = 0; J<大小; J ++)//数组范围0到n-1
      {
         new_array [J] = tmp_array [J]。
         new_array [J +大小] = 2 * tmp_array [J]。
      }
      删除[] tmp_array //删除旧的阵列
      大小= * 2;
      tmp_array = INT新[尺寸] //为下一次迭代分配内存
      对于(INT K = 0; K<大小; k ++)
        tmp_array [K] = new_array [k]的;为下一迭代//复制阵列
  }
  删除[] tmp_array; //要释放内存
  返回new_array;
};

I am trying to get this function to create anew array to be 2x the size of the array argument, copy the contents into the new array, and for the second half of the array, create new values by doing 2*the values in the first half of the array, then delete the original array. Repeat this process for the specified number of times, then return the new array. I feel like I have the right algorithm down but my code isn't working. Please help!

int *ArrayDynamicAllocation(int array[], int size, int number)
{
    int *new_array = NULL;

    for(int i=0; i<number-1; i++)
    {
        new_array = new int[size*2];
        for(int j=0; j<size-1; j++)
        {
            new_array[j]=array[j];
            new_array[j+size]=2*array[j];
        }
        array=new_array;
        delete[] array;
        size=size*2;     
    }
    return new_array;
}

An example output would be if my info to put into my function was int arr[2] = {0,1}; array_size = 2; number = 3; I want it to output 0 1 0 2 0 2 0 4 0 2 0 4 0 4 0 8

解决方案

int *ArrayDynamicAllocation(int array[], int size, int number)
{
   int *new_array = NULL;
   int *tmp_array = new int[array.length()];
   for(int k=0; k<array.length(); k++)//Initial array copying.
       tmp_array[k] = array[k];

   for(int i=0; i<number; i++)//Array range 0 to n-1
   {
      new_array = new int[size*2];
      for(int j=0; j<size; j++)//Array range 0 to n-1
      {
         new_array[j]=tmp_array[j];
         new_array[j+size]=2*tmp_array[j];
      }
      delete[] tmp_array //Deleting old array
      size=size*2; 
      tmp_array = new int[size] //Allocating memory for next iteration
      for(int k=0; k<size; k++)
        tmp_array[k] = new_array[k];//Copying array for next iteration
  }
  delete[] tmp_array;// To free memory
  return new_array;
};

这篇关于功能增加一倍的时间数组任意数量的大小?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆