首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

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

2012-12-18 
把一个一维数组转化成二维数组的算法今天,有个同事提到了把一个一维数组转化为二维数组的算法。他用了两个

把一个一维数组转化成二维数组的算法
今天,有个同事提到了把一个一维数组转化为二维数组的算法。他用了两个循环,一个用来初始化结果数组,一个用来把原数组的值填充到结果数组。我觉得,只需一个循环就可以了,说白了,这个转换就是一个映射,就是把一个一维坐标映射为一个二维坐标。
算法:

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_arrend


更ruby一点的实现:
def div_arr(arr, div_len)if div_len <= 0 or div_len == 1 or div_len >= arr.sizereturn [arr]endres = []arr.each_index{ |i|x,y = i / div_len,i % div_lenres[x] = [] if not res[x]res[x][y] = arr[i]}resend

更优雅的,也许是有些风险的:
class Arraydef div(len)if len <= 1 or len >= self.sizereturn [self]endres=[]self.each_index{ |i|x,y = i / len, i % lenres[x] = [] if not res[x]res[x][y] = self[i]}resendend

热点排行