![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数组
凌空的桨
https://github.com/marsmarcin/
展开
-
数组1——数组的定义及表示
前面介绍的线性表、栈、队列和串都属于线性结构,本章的数组和下一章的广义表并不属于线性结构,但可以看作是线性结构的推广。数组中的元素可以具有某种元素,并且元素的结构相同。数组中的数据元素可以上单个元素,也可以是一个线性表。数组的定义及表示【定义】数组(array)是由类型相同的数据元素构成的有序集合,每个元素称为一个数组元素,数组中的元素依次存储在n个连续内存单元中。数组中的元素本身可以...原创 2018-12-08 20:05:55 · 4316 阅读 · 0 评论 -
数组11——稀疏矩阵的压缩存储1——基本内容
【定义】所谓稀疏矩阵,假设在m×n矩阵中,有t个元素不为零,令δ=t/(m×n),δ为矩阵的稀疏因子,如果δ≤0.05,则称矩阵为稀疏矩阵。通俗的来讲,若矩阵中大多数元素的值为零,只有很少的非零元素,这样的矩阵就是稀疏矩阵。如图就是一个稀疏矩阵【三元组表示】为了节省内存单元,需要对稀疏矩阵进行压缩存储。在进行压缩存储的过程中,我们可以只存储稀疏矩阵的非零元素,为了表示非零元素...原创 2018-12-17 19:30:29 · 1699 阅读 · 0 评论 -
数组4——二维数组1——将矩阵顺时针旋转90度
【定义】二维数组也称为矩阵(Matrix),关于矩阵的算法经常在各种考试及面试中出现,它主要考查被测试者的逻辑思维能力、下标的灵活应用及对C语言的掌握程度,这种题目通常有较高的难度,通常需要二重循环实现。经典的矩阵算法有将矩阵旋转90度、魔方阵、拉丁方阵、蛇形方阵、内螺旋矩阵、外螺旋矩阵、逆螺旋矩阵。【问题】将矩阵顺时针旋转90度如图【分析】这题是北京航天大学考研试题。对于...原创 2018-12-10 21:27:40 · 10845 阅读 · 4 评论 -
数组10——数组的压缩存储2——上三角阵的压缩存储
编写一个算法,将一个以行为主序存储的一维数组转换为以列为主序压缩存储的一维数组。例如,设有n×n的上三角矩阵A的上三角元素已按行为主序连续存放在数组b中,请设计一个算法Trans将b中元素按列为主序存放在数组c中。当n=5时,矩阵A如图所示:其中b=(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15),c=(1,2,6,3,7,10,4,8,11,13,5,...原创 2018-12-16 20:37:40 · 6777 阅读 · 0 评论 -
数组9——数组的压缩存储1——基本内容
【压缩存储】有些高阶矩阵中,非零的元素非常少,此时若使用二维数组将造成存储空间的浪费,这时,可只存储部分元素,从而提高存储空间的利用率。通常的做法是为多个相同值的元素只分配一个存储单元,对值为零的元素不分配存储单元。这种存储方式称为矩阵的压缩存储。我们把非零元素非常少(远小于m×n)或元素分布呈一定规律的矩阵称为特殊矩阵。对称矩阵、三角矩阵和对角矩阵都属于特殊矩阵。【对称矩阵】如果一...原创 2018-12-15 19:34:38 · 2747 阅读 · 1 评论 -
数组3——将奇数移动到偶数的左边
将数组c[1:n]中的所有奇数移动到偶数之前,要求时间复杂度为O(n)。【分析】这是西北大学考研试题。设置两个指示器i和j,分别从第一个元素向右从最后一个元素开始向左扫描,i遇到奇数略过,遇到偶数暂停,j遇到偶数略过,遇到奇数暂停,如果i<j,则交换i和j指向的元素,直到i≥j将结束,这样左边的元素就为奇数,右边的元素就为偶数。 main.cpp#include <...原创 2018-12-09 16:19:59 · 491 阅读 · 0 评论 -
数组8——二维数组6——打印蛇形方阵
打印蛇形方阵,将自然数1,2,··· ,N的平方按照蛇形方式依次存入N×N矩阵中。例如,N=5时的蛇形方阵如图所示。【分析】这是南京航空航天大学的考研试题。从a11开始到ann为止,依次填入自然数,交替对每一斜行从左上元素到右下元素或者从右下元素到左上元素填数。通过观察,发现蛇形矩阵有以下特点:对于每一斜行的元素来说:(1)对于奇数的斜行来说,下一个数的行号比上一个数的行号增1...原创 2018-12-14 18:27:40 · 1985 阅读 · 1 评论 -
数组7——二维数组5——打印拉丁方阵
打印拉丁方阵。N×N的拉丁方阵的每一行,每一列均为自然数1,2,3,... ,N的全排列,每一行和每一列均无重复数字。一个5×5的拉丁方阵如图所示【分析】生成拉丁方阵的方法如下:(1)第一行元素由随机数产生,从1开始,依次将自然数1--N填充到第一行,填入的列号由随机数产生。(2)以第一行作为方阵的索引,即如果第一行的第i个元素值为j,则a[0][j]在各行中的列号是在第一行...原创 2018-12-13 20:05:30 · 1666 阅读 · 0 评论 -
数组6——二维数组4——打印螺旋矩阵
打印一个螺旋矩阵。例如,一个5×5的螺旋矩阵如图【分析】通过观察,发现一个n×n的螺旋矩阵可以分为(n+1)/2圈,可以使用一个循环控制圈数。每圈的元素可以分为上、右、下、左4个方向,在内层循环中可以使用4个循环控制每圈的四个方向的元素输出。其中:△上:行号不变,列号依次增1;△右:行号依次增1,列号不变;△下:行号不变,列号依次减1;△左:行号依次减1,列号不变。mai...原创 2018-12-12 20:56:10 · 1510 阅读 · 0 评论 -
数组2——查找第k小元素
在数组a的前n个元素中找出第k(1≤k≤n)小的元素,例如,数组{98, 33, 21, 102, 45, 5, 32, 11, 65, 82, 193, 321, 34, 72}中第5小的元素是33。【分析】这是上海大学考研试题。要查找第k小的元素,并不需要完全对数组中的元素进行排序,可以利用快速排序算法思想,只对部分元素进行排序就可以找到第k小元素。一趟排序结束后,若i==k,说明找...原创 2018-12-08 21:13:50 · 2626 阅读 · 0 评论 -
数组5——二维数组3——打印魔方阵
3阶的魔方阵在四千年前中国科学家就知道了,河图正是一个3阶魔方阵的例子。打印魔方阵。魔方阵,又称“纵横图”,是指组成元素为自然数1,2,... ,n^2的n×n的方阵,其中每个元素值都不相等,且每行,每列及主、副对角线上元素之和都相等。例如,3×3的魔方阵如图【分析】构造魔方阵的方法如下:(1)将1放在第一行中间一列;(2)从2开始直到n×n为止各数依次按照下列规则存放:每一...原创 2018-12-11 22:00:37 · 1189 阅读 · 0 评论