《尚硅谷数据结构》-稀疏数组

目录

一、数据结构

二、稀疏数组的概念

三、二维数组和稀疏数组的转换


一、数据结构

数据结构分为 线性结构非线性结构

线性结构:数据元素之间存在一对一的线性关系,例如数组、队列、链表和栈。

线性结构又分为顺序存储和链式存储,其中链式存储中的元素不一定是连续的。

非线性结构:二维数组、广义表、树结构、图结构。

 

二、稀疏数组的概念

稀疏数组的处理方法是:

  1. 记录数组一共有几行几列, 有多少个不同的值
  2. 把具有不同值的元素的行列及值记录在一个小规模的数组中, 从而缩小程序的规模

 

三、二维数组和稀疏数组的转换

public class SparseArray {
    public static void main(String[] args) {
        //原始数组-11*11的棋盘
        //0表示没有棋子,1表示黑子,2表示白子
        int[][] chessArr = new int[11][11];
        chessArr[1][2] = 1;
        chessArr[2][3] = 2;
        chessArr[4][5] = 1;
        System.out.println("原始数组");
        printArr(chessArr);

        //将二维数组 转 稀疏数组
        // 第一步得到非零数的个数
        int sum =0;
        for(int i=0; i<11; i++){
            for(int j=0; j<11; j++){
                if(chessArr[i][j]!=0){
                    sum++;
                }
            }
        }
        System.out.println("非零数的个数:"+sum);

        // 第二步构造稀疏数组大小
        int sparseArr[][] = new int[sum+1][3];
        sparseArr[0][0] =11;
        sparseArr[0][1] =11;
        sparseArr[0][2] =sum;

        // 第三步再遍历赋值
        int l=1;
        for(int i=0; i<11; i++){
            for(int j=0; j<11; j++){
                if(chessArr[i][j]!=0){
                    sparseArr[l][0]= i;
                    sparseArr[l][1]= j;
                    sparseArr[l][2]= chessArr[i][j];
                    l++;
                }
            }
        }
        printArr(sparseArr);

        //稀疏数组 转回 原二维数组
        int chessArr2[][] = new int[sparseArr[0][0]][sparseArr[0][1]];
        for(int i=1; i<sparseArr.length; i++){
            chessArr2[sparseArr[i][0]][sparseArr[i][1]] = sparseArr[i][2];
        }
        printArr(chessArr2);

    }

    public static void printArr(int[][] arr){
        for(int[] row : arr){
            for(int data : row){
                System.out.printf("%d\t", data); //制表符号/t表示
            }
            System.out.println();
        }
    }
}

            

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
尚硅谷数据结构韩顺平老师在讲解数据结构时也提到了哈希表。哈希表是一种常用的数据结构,它通过哈希函数将关键字映射到一个数组中的位置,以实现快速的查找和插入操作。哈希表的特点是可以在常数时间内进行查找、插入和删除操作,因此在实际应用中被广泛使用。 然而,哈希表也有一些不足之处。首先,哈希表中的数据是没有顺序的,所以不能以一种固定的方式来遍历其中的元素。其次,通常情况下,哈希表中的key是不允许重复的,不能放置相同的key,用于保存不同的元素。 尽管哈希表存在一些不足之处,但是它在实际应用中的性能优势仍然是非常显著的。在处理大量数据时,哈希表可以提供较高的查找效率,使得我们能够更快地找到所需的数据。 因此,尚硅谷数据结构韩顺平老师在讲解数据结构时也强调了哈希表的重要性,帮助学习者了解并掌握这一常用的数据结构。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [韩顺平老师尚硅谷Java数据结构与算法194集笔记](https://download.csdn.net/download/weixin_52184392/32076811)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [【尚硅谷|韩顺平】数据结构和算法](https://blog.csdn.net/ZEZHEN0222/article/details/128624496)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [数据结构与算法-哈希表 | 尚硅谷韩顺平](https://blog.csdn.net/weixin_54232666/article/details/127043618)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值