数字逻辑——数组维度转换简析

来源:互联网 发布:心中的秘密知乎 编辑:程序博客网 时间:2024/06/08 18:47

前言:识盈虚之有数,觉宇宙之无穷——这是一种存在于意识形态上的对大自然的高度概括

                   从物理现象到数学逻辑,从具体实例抽象到泛化规律的转变——算法,笔者浅见。

                   官方对算法的定义——算法(Algorithm)是指解题方案的准确而完整的描述。



关于数组维度转换逻辑

        比较简单直接上代码:

                             {

                                          int arr[width][height];

                                         for(int i=0;i<width*height;i++)             

                                               arr[i/width][i%width].....                       //用一个线性下标来逻辑上的表示二维数组,//等效s[i];

                              }


             在这数组的内部实现本就是分配的一组线性内存,所以也可以通过指针直接顺序寻任意维度(dimension)的数组的元素

            但是与指针相比:逻辑层面上的转换更具有泛性

code start

{

       int **arr=(int**)malloc(sizeof(int*)*demension_1);     //demension_1:表示数组第一维的长度

      for(int i=0;i<demension_1;i++)

           arr[i]=(int*)malloc(sizeof(int)*demension_2);      //demension_2表示数组第二维的长度

          ........(同理可以动态分配多问数组)

}

           简析:上述代码动态分配多维数组,这里数组的内部构造并不一定是线性存在于内存的

        此时如果简单的使用指针来进行线性寻址的话是不成立的(可以稍做改变对数组的第一维线性寻址,比较简单,此处不予实现)

       但如果依旧使用上述的逻辑转换成一维数组的话依旧可以实现


        其实运用数字对数据结构进行逻辑上的转换还有很多,但其本质思想相同

        下一次笔者会总结一个更加经典的——静态链表(前人的智慧)


原创粉丝点击