• Algorithm Gossip (46) 稀疏矩阵存储


    前言

    This Series aritcles are all based on the book 《经典算法大全》; 对于该书的所有案例进行一个探究和拓展,并且用python和C++进行实现; 目的是熟悉常用算法过程中的技巧和逻辑拓展。

    提出问题

    46.Algorithm Gossip:稀疏矩阵

    说明

    如果在矩阵中,多数的元素并没有资料,称此矩阵为稀疏矩阵(sparse matrix ), 由于矩阵在程式中常使用二维阵列表示,二维阵列的大小与使用的记忆体空间成正比,如果多数的元素没有资料 , 则会造成记忆体空间的浪费 , 为 此 , 必须设计稀疏矩阵的阵列储存方式 , 利用较少的记忆体空间储存完整的矩阵资讯。
    送分题; 没什么讲的, 终于结束了排序和搜寻。。这个看代码就知道什么意思了, 具体的用处,出现了就能很快手写出来; 一个小技巧。

    分析和解释

    代码

    #include <stdio.h>
    #include <stdlib.h>
    int main(void) {
    	int num[5][3] = {{5, 6, 4},
    	{1, 1, 3},
    	{2, 3, 6},
    	{3, 2, 9},
    	{4, 4, 12}};
    	int i, j, k = 1;
    	printf("sparse matrix:
    ");
    	for(i = 0; i < 5; i++) {
    		for(j = 0; j < 3; j++) {
    			printf("%4d", num[i][j]);
    			}
    		putchar('
    ');
    		}
    	printf("
    matrix还原:
    ");
    	for(i = 0; i < num[0][0]; i++) {
    		for(j = 0; j < num[0][1]; j++) {
    			if(k < num[0][2] &&
    			i == num[k][0] && j == num[k][1]) {
    				printf("%4d ", num[k][2]);
    				k++;
    				}
    			else
    			printf("%4d ", 0);
    			}
    		putchar('
    ');
    		}
    	return 0;
    	}
    

    拓展和关联

    后记

    参考书籍

    • 《经典算法大全》
    • 维基百科
  • 相关阅读:
    php分享三十:php版本选择
    php分享二十九:命名空间
    高性能mysql读书笔记(一):Schema与数据类型优化
    php分享二十八:mysql运行中的问题排查
    php分享二十七:批量插入mysql
    php分享二十六:读写日志
    Python | 一行命令生成动态二维码
    Python-获取法定节假日
    GoLang-字符串
    基础知识
  • 原文地址:https://www.cnblogs.com/actanble/p/6711225.html
Copyright © 2020-2023  润新知