`
messi_18
  • 浏览: 99105 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

把一个一维数组转化成二维数组的算法

    博客分类:
  • ruby
阅读更多
今天,有个同事提到了把一个一维数组转化为二维数组的算法。他用了两个循环,一个用来初始化结果数组,一个用来把原数组的值填充到结果数组。我觉得,只需一个循环就可以了,说白了,这个转换就是一个映射,就是把一个一维坐标映射为一个二维坐标。
算法:
def div_arr(src_arr,div_len)
  if div_len >= src_arr.size
    src_arr
  end

  row_index = -1
  result_arr = []

  src_arr.each_index{ |i|

    column_index = i % div_len
    if column_index == 0
      row_index += 1
      result_arr[row_index] = []
    end
  
    result_arr[row_index][column_index] = src_arr[i]
  }

  result_arr

end


更ruby一点的实现:
def div_arr(arr, div_len)

	if div_len <= 0 or div_len == 1 or div_len >= arr.size
		return [arr]
	end

	res = []
	arr.each_index{ |i|
		x,y = i / div_len,i % div_len

		res[x] = [] if not res[x]
		res[x][y] = arr[i]
	}

	res

end

更优雅的,也许是有些风险的:
class Array
	def div(len)
		if len <= 1 or len >= self.size
			return [self]
		end
	
		res=[]
		
		self.each_index{ |i|
			x,y = i / len, i % len
			res[x] = [] if not res[x]
			res[x][y] = self[i]
		}

		res
	end
end
分享到:
评论

相关推荐

    二维数组如何进行冒泡排序

    关键在于将二维数组转化为一维数组进行排序,然后再将排序后的一维数组还原为二维数组。这种思路不仅可以应用于冒泡排序,还可以推广到其他类型的排序算法中。希望本文能够帮助初学者更好地理解二维数组排序的原理和...

    Java编程一维数组转换成二维数组实例代码

    //一维数组转化为二维数组 public static double[][] TwoArry(double[] onedouble){ double[][] arr=new double[1][onedouble.length]; for (int i = 0; i ; i++) { arr[0][i]=onedouble[i]; } return arr; ...

    java实现二维数组转json的方法示例

    这是通过创建一个`StringBuffer`对象`sb`,然后遍历二维数组,将每个子数组转换为JSON对象格式,最后组合成一个JSON数组。以下是代码详解: 1. 首先定义了一个二维字符串数组`blogList`,包含了多条博客信息。 2. ...

    c程序将表格数据读取到二维数组

    然后,我们定义了一个名为 `n_Intensitys` 的二维数组,它将用来存储 Excel 表格数据。我们使用 `malloc` 函数来动态分配内存来构造二维数组。 接下来,我们使用 `fopen` 函数来打开 Excel 文件 `file1.cvs`,并...

    matlab - 三维数组

    例如,读取一个RGB图像后,它会默认转化为一个三维数组,形状为`height`(图像高度)x `width`(图像宽度)x `3`(颜色通道)。 在数据分析中,三维数组可以用来存储不同时间点的多变量数据,其中第一维可能是时间...

    Python实现二维数组输出为图片

    对于二维数组,img_mask [[ 0 0 0 ..., 7 7 7] [ 0 0 0 ..., 7 7 7] [ 0 0 0 ..., 7 7 7] ..., [266 266 266 ..., ...以上这篇Python实现二维数组输出为图片就是小编分享给大家的全部内容了,希望能给大家一个参

    加密策略、二维数组1

    二维数组可以理解为由一维数组构成的数组,就像直尺上的刻度,整个直尺是一个以厘米为单位的一维数组,而每个厘米又是一个包含10毫米的一维数组。 在C/C++等语言中,访问二维数组的某个元素可以通过以下方式计算其...

    python中字符串变二维数组的实例讲解

    - 我们现在得到的是一维列表,其中每个元素也是一个列表,代表二维数组的一行。这已经满足了二维列表的要求,可以用于算法处理。 4. **转换为numpy数组**: - numpy库提供了强大的数组操作功能,包括更灵活的索引...

    计算机软件-商业源码-二维数组,映射类.zip

    在计算机编程中,二维数组和映射类是两种非常重要的数据结构,它们在软件开发中扮演着关键角色,尤其在处理复杂数据组织和算法实现时。这个“计算机软件-商业源码-二维数组,映射类.zip”压缩包很可能是包含了一些...

    C++的数组转换成矩阵

    本示例展示了如何使用C++实现将两个二维数组(模拟矩阵)进行相乘并存储到另一个二维数组的操作。具体步骤如下: 1. **定义数组**: - 定义了三个整型数组:`a[2][3]`、`b[3][2]` 和 `c[2][2]`。 - 数组 `a` 和 `...

    leetcode二维数组搜索-leetcode:C中一些算法问题的解决

    leetcode二维数组搜索leetcode 对于 Leetcode 和其他算法问题 文件描述 2_add_two_numbers.c : 两个数相加 3_solution.c : 无重复字符的最长子串 space_urlencode.c : 在 O(n) space_urlencode.c空间更改为“ ” ./...

    C语言课设1二维数组的应用2删除指定字符3楼盘管理程序.pdf

    对于一个4x4的二维数组,可以通过双重循环遍历数组的所有元素,同时维护一个最大值和最小值变量来跟踪边界元素的最值。在主函数中初始化数组,然后调用特定的函数来完成这个任务。函数应接受二维数组和其大小作为...

    一维二维插值c代码

    二维插值则是在平面内的多个数据点上构建一个连续的表面。下面我们将详细讨论标题和描述中提到的一维插值和二维插值方法,并给出C语言实现的相关知识点。 1. 埃特金不等距插值: 埃特金(Atkinson)插值法是处理非...

    数据结构中有关多维数组的课程设计

    在编程语言中,多维数组通过声明数组的维度和大小来创建,例如在C++中,我们可以声明一个二维数组`int arr[3][4]`,表示一个包含3行4列的整数矩阵。 接下来,我们要讨论多维数组的存储方式。在内存中,多维数组通常...

    指向计算思维培养的模型化思维教学模式实践——以选考数据与数据结构“二维数组”为例.pdf

    在二维数组的教学中,模型化思维模式可以通过直观的认知模型,如数字化图像与二维数组元素的对应关系,帮助学生更好地理解二维数组的概念。教师可以将数字化图像放大,创设出图像像素和二维数组元素之间的关系模型,...

    php去除二维数组的重复项方法

    1. 初始化一个用于连接子数组元素的字符串变量$joinstr,用来在后续步骤中将子数组的每个元素连接成一个字符串,这样就可以将二维数组降维到一维。 2. 如果$stkeep为真,那么会保存一级数组(即二维数组的每个子...

    数组的各种操作附有源代码和可执行文件

    4. **二维数组转化为一维数组存储**:在P36的文件中,可能包含将二维数组(矩阵)转换为一维数组的代码。这种转换有时用于节省内存空间或简化操作,例如,当需要将矩阵传递给只接受一维数组的函数时。 5. **矩阵...

    one-to-two.rar_labview

    在这个“将一维转化为二维数组.vi”中,开发者通过LabVIEW的图形化编程语言G编写了一个转换函数,将输入的一维数组转换成二维数组,以便于处理复杂的逻辑或算法。 实现这个功能通常涉及以下几个步骤: 1. **数据...

    Dijistra最短路径 二维数组结构 c++.rar_SHORTEST-PATHS_proteus_最短路_最短路径_最短路径

    而在"Dijistra最短路径 二维数组结构 c++.txt"文件中,很可能包含了C++实现迪杰斯特拉算法的代码示例,可以学习如何将上述理论知识转化为实际的编程实践。 为了更好地理解并应用迪杰斯特拉算法,你需要掌握以下几个...

Global site tag (gtag.js) - Google Analytics