zoukankan      html  css  js  c++  java
  • 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;
    	}
    

    拓展和关联

    后记

    参考书籍

    • 《经典算法大全》
    • 维基百科
  • 相关阅读:
    python调用WebService遇到的问题'Document' object has no attribute 'set'
    jquery AJAX 拦截器 success error
    js 钩子(hook)
    js 继承
    js Object的复制
    js关于 indexOf
    js重排序,笔记
    js类型检测,笔记
    jquery源码的阅读理解
    Windows IPC 连接详解(转)
  • 原文地址:https://www.cnblogs.com/actanble/p/6711225.html
Copyright © 2011-2022 走看看