千秋TʌT
码龄1年
  • 3,235
    被访问
  • 43
    原创
  • 70,784
    排名
  • 3
    粉丝
关注
提问 私信
  • 加入CSDN时间: 2020-12-16
博客简介:

weixin_53666393的博客

查看详细资料
  • 3
    领奖
    总分 352 当月 1
个人成就
  • 获得2次点赞
  • 内容获得2次评论
  • 获得56次收藏
创作历程
  • 43篇
    2022年
成就勋章
TA的专栏
  • 数据结构
    21篇
  • 算法
    22篇
  • C语言
    39篇
兴趣领域 设置
  • 数据结构与算法
    推荐算法
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

【无标题】矩阵连乘问题,2019年软考上午试题

2019年软考真题,矩阵连乘问题
原创
发布博客 2022.03.24 ·
65 阅读 ·
0 点赞 ·
0 评论

Heap排序法被称为改良的选择排序法

说明选择排序法的概念简单,每次从未排序部份选一最小值,插入已排序部份的后端,其时间主要花费于在整个未排序部份寻找最小值,如果能让搜寻最小值的方式加 快,选择排序法的速率也就可以加快,Heap排序法让搜寻的路径由树根至最后一个树叶,而不是整个未排序部份,因而称之为改良的选择排序法。解法Heap排序法使用Heap Tree(堆积树),树是一种资料结构,而堆积树是一个二元树,也就是每一个父节点最多只有两个子节点(关于树的详细定义还请见资料结构书籍),堆积树的 父节点若小于子节点,则称之为最小堆积(..
原创
发布博客 2022.02.15 ·
10 阅读 ·
0 点赞 ·
0 评论

快速排序法(一)

说明快速排序法(quick sort)是目前所公认最快的排序方法之一(视解题的对象而定),虽然快速排序法在最差状况下可以达O(n2),但是在多数的情况下,快速排序法的效率表现是相当不错的。快速排序法的基本精神是在数列中找出适当的轴心,然后将数列一分为二,分别对左边与右边数列进行排序,而影响快速排序法效率的正是轴心的选择。这边所介绍的第一个快速排序法版本,是在多数的教科书上所提及的版本,因为它最容易理解,也最符合轴心分割与左右进行排序的概念,适合对初学者进行讲解。解法这边所介绍的快速演算如下:将最
原创
发布博客 2022.02.13 ·
14 阅读 ·
0 点赞 ·
0 评论

快速排序法(二)

说明在快速排序法(一)中,每次将最左边的元素设为轴,而之前曾经说过,快速排序法的加速在于轴的选择,在这个例子中,只将轴设定为中间的元素,依这个元素作基准进行比较,这可以增加快速排序法的效率。解法在这个例子中,取中间的元素s作比较,同样的先得右找比s大的索引 i,然后找比s小的索引 j,只要两边的索引还没有交会,就交换 i 与 j 的元素值,这次不用再进行轴的交换了,因为在寻找交换的过程中,轴位置的元素也会参与交换的动作,例如:41 24 76 11 45 64 21 69 19 36首先le
原创
发布博客 2022.02.12 ·
9 阅读 ·
0 点赞 ·
0 评论

快速排序法(三)

说明之前说过轴的选择是快速排序法的效率关键之一,在这边的快速排序法的轴选择方式更加快了快速排序法的效率,它是来自演算法名书Introduction to Algorithms 之中。解法先说明这个快速排序法的概念,它以最右边的值s作比较的标准,将整个数列分为三个部份,一个是小于s的部份,一个是大于s的部份,一个是未处理的部份,如下所示 :在排序的过程中,i 与 j 都会不断的往右进行比较与交换,最后数列会变为以下的状态:然后将s的值置于中间,接下来就以相同的步骤会左...
原创
发布博客 2022.02.02 ·
13 阅读 ·
0 点赞 ·
0 评论

基数排序法

说明在之前所介绍过的排序方法,都是属于「比较性」的排序法,也就是每次排序时,都是比较整个键值的大小以进行排序。这边所要介绍的「基数排序法」(radix sort)则是属于「分配式排序」(distribution sort),基数排序法又称「桶子法」(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些「桶」中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序.
原创
发布博客 2022.02.01 ·
28 阅读 ·
0 点赞 ·
0 评论

循序搜寻法(使用卫兵)

说明搜寻的目的,是在「已排序的资料」中寻找指定的资料,而当中循序搜寻是最基本的搜寻法,只要从资料开头寻找到最后,看看是否找到资料即可。解法初学者看到循序搜寻,多数都会使用以下的方式来进行搜寻:while(i < MAX) { if(number[i] == k) { printf("找到指定值"); break; } i++; } 这个方法基本上没有错,但是可以加以改善,可以利用设定卫兵的方...
原创
发布博客 2022.01.31 ·
27 阅读 ·
0 点赞 ·
0 评论

二分搜寻法

说明如果搜寻的数列已经有排序,应该尽量利用它们已排序的特性,以减少搜寻比对的次数,这是搜寻的基本原则,二分搜寻法是这个基本原则的代表。解法在二分搜寻法中,从数列的中间开始搜寻,如果这个数小于我们所搜寻的数,由于数列已排序,则该数左边的数一定都小于要搜寻的对象,所以无需浪费时间在左边的数;如果搜寻的数大于所搜寻的对象,则右边的数无需再搜寻,直接搜寻左边的数。所以在二分搜寻法中,将数列不断的分为两个部份,每次从分割的部份中取中间数比对,例如要搜寻92于以下的数列,首先中间数索引为(0+9)/2 =
原创
发布博客 2022.01.30 ·
28 阅读 ·
0 点赞 ·
0 评论

插补搜寻法

说明如果却搜寻的资料分布平均的话,可以使用插补(Interpolation)搜寻法来进行搜寻,在搜寻的对象大于500时,插补搜寻法会比 二分搜寻法 来的快速。解法插补搜寻法是以资料分布的近似直线来作比例运算,以求出中间的索引并进行资料比对,如果取出的值小于要寻找的值,则提高下界,如果取出的值大于要寻找的 值,则降低下界,如此不断的减少搜寻的范围,所以其本原则与二分搜寻法是相同的,至于中间值的寻找是透过比例运算,如下所示,其中K是指定要寻找的对象, 而m则是可能的索引值:代码部分#.
原创
发布博客 2022.01.29 ·
17 阅读 ·
0 点赞 ·
0 评论

费氏搜寻法

说明二分搜寻法每次搜寻时,都会将搜寻区间分为一半,所以其搜寻时间为O(log(2)n),log(2)表示以2为底的log值,这边要介绍的费氏搜寻,其利用费氏数列作为间隔来搜寻下一个数,所以区间收敛的速度更快,搜寻时间为O(logn)。解法费氏搜寻使用费氏数列来决定下一个数的搜寻位置,所以必须先制作费氏数列,这在之前有提过;费氏搜寻会先透过公式计算求出第一个要搜寻数的位置,以及其代 表的费氏数,以搜寻对象10个数字来说,第一个费氏数经计算后一定是F5,而第一个要搜寻的位置有两个可能,例如若在下..
原创
发布博客 2022.01.28 ·
7 阅读 ·
0 点赞 ·
0 评论

稀疏矩阵问题

说明如果在矩阵中,多数的元素并没有资料,称此矩阵为稀疏矩阵(sparse matrix),由于矩阵在程式中常使用二维阵列表示,二维阵列的大小与使用的记忆体空间成正比,如果多数的元素没有资料,则会造成记忆体空间的浪费,为 此,必须设计稀疏矩阵的阵列储存方式,利用较少的记忆体空间储存完整的矩阵资讯。解法在这边所介绍的方法较为简单,阵列只储存矩阵的行数、列数与有资料的索引位置及其值,在需要使用矩阵资料时,再透过程式运算加以还原,例如若矩阵资料如下 ,其中0表示矩阵中该位置没有资料:0 0 0 ..
原创
发布博客 2022.01.25 ·
31 阅读 ·
0 点赞 ·
0 评论

多维矩阵转一维矩阵

说明有的时候,为了运算方便或资料储存的空间问题,使用一维阵列会比二维或多维阵列来得方便,例如上三角矩阵、下三角矩阵或对角矩阵,使用一维阵列会比使用二维阵列来得节省空间。解法以二维阵列转一维阵列为例,索引值由0开始,在由二维阵列转一维阵列时,我们有两种方式:「以列(Row)为主」或「以行(Column)为主」。由于 C/C++、Java等的记忆体配置方式都是以列为主,所以您可能会比较熟悉前者(Fortran的记忆体配置方式是以行为主)。以列为主的二维阵列要转为一维阵列时,是将二维阵列由..
原创
发布博客 2022.01.24 ·
34 阅读 ·
0 点赞 ·
0 评论

上三角、下三角、对称矩阵

说明上三角矩阵是矩阵在对角线以下的元素均为0,即Aij= 0,i > j,例如:1 2 3 4 5 0 6 7 8 9 0 0 10 11 12 0 0 0 13 14 0 0 0 0 15下三角矩阵是矩阵在对角线以上的元素均为0,即Aij = 0,i < j,例如:1 0 0 0 0 2 6 0 0 0 3 7 10 0 0 4 8 11 13 0 ...
原创
发布博客 2022.01.23 ·
1090 阅读 ·
0 点赞 ·
0 评论

奇数魔方阵

说明将1到n(为奇数)的数字排列在nxn的方阵上,且各行、各列与各对角线的和必须相同,如下所示:解法填魔术方阵的方法以奇数最为简单,第一个数字放在第一行第一列的正中央,然后向右(左)上填,如果右(左)上已有数字,则向下填,如下图所示: 一般程式语言的阵列索引多由0开始,为了计算方便,我们利用索引1到n的部份,而在计算是向右(左)上或向下时,我们可以将...
原创
发布博客 2022.01.21 ·
159 阅读 ·
0 点赞 ·
0 评论

4N 魔方阵

说明与奇数魔术方阵相同,在于求各行、各列与各对角线的和相等,而这次方阵的维度是4的倍数。解法先来看看4X4方阵的解法:简单的说,就是一个从左上由1依序开始填,但遇对角线不填,另一个由左上由16开始填,但只填在对角线,再将两个合起来就是解答了;如果N大于2,则以 4X4为单位画对角线:至于对角线的位置该如何判断,有两个公式,有兴趣的可以画图印证看看,如下所示:左上至右下:j % 4 == i % 4右上至左下:(j % 4 + i % 4) == 1 ...
原创
发布博客 2022.01.21 ·
110 阅读 ·
0 点赞 ·
0 评论

2(2N+1) 魔方阵

说明方阵的维度整体来看是偶数,但是其实是一个奇数乘以一个偶数,例如6X6,其中6=2X3,我们也称这种方阵与单偶数方阵。解法如果您会解奇数魔术方阵,要解这种方阵也就不难理解,首先我们令n=2(2m+1),并将整个方阵看作是数个奇数方阵的组合,如下所示:首先依序将A、B、C、D四个位置,依奇数方阵的规则填入数字,填完之后,方阵中各行的和就相同了,但列与对角线则否,此时必须在A-D与C- B之间,作一些对应的调换,规则如下:将A中每一列(中间列除外)的头m个元素,与D中对应位置的元素调换。.
原创
发布博客 2022.01.19 ·
29 阅读 ·
0 点赞 ·
0 评论

求九位累进可除数。所谓九位累进可除数就是这样一个数:这个数用到1到9这九个数字组成,每个数字刚好只出现一次。这九个位数的前两位能被2整除,前三位能被3整除……前N位能被N整除,整个九位数能被9整除。

*问题分析与算法设计问题本身可以简化为一个穷举问题:只要穷举每位数字的各种可能取值,按照题目的要求对穷举的结果进行判断就一定可以得到正确的结果。问题中给出了“累进可除”这一条件,就使得我们可以在穷举法中加入条件判断。在穷举的过程中,当确定部分位的值后,马上就判断产生的该部分是否符合“累进可除”条件,若符合,则继续穷举下一位数字;否则刚刚产生的那一位数字就是错误的。这样将条件判断引入到穷举法之中,可以尽可能早的发现矛盾,尽早地放弃不必要穷举的值,从而提高程序的执行效率。为了达到早期发现矛盾的目的,不能采
原创
发布博客 2022.01.19 ·
58 阅读 ·
0 点赞 ·
0 评论

魔术师的猜牌术(1)

魔术师利用一副牌中的13张黑桃,预先将它们排好后迭在一起,牌面朝下。对观众说:我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?你们就看。魔术师将最上面的那张牌数为1,把它翻过来正好是黑桃A,将黑桃A放在桌子上,然后按顺序从上到下数手上的余牌,第二次数1、2,将第一张牌放在这迭牌的下面,将第二张牌翻过来,正好是黑桃2,也将它放在桌子上,第三次数1、2、3,将前面两张依次放在这迭牌的下面,再翻第三张牌正好是黑桃3。这样依次进行将13张牌全翻出来,准确无误。问魔术师手中的牌原始顺序是怎样安排的?
原创
发布博客 2022.01.18 ·
41 阅读 ·
0 点赞 ·
0 评论

魔术师的猜牌术(2)

魔术师再次表演,他将红桃和黑桃全部迭在一起,牌面朝下放在手中,对观众说:最上面一张是黑桃A,翻开后放在桌上。以后,从上至下每数两张全依次放在最底下,第三张给观众看,便是黑桃2,放在桌上后再数两张依次放在最底下,第三张给观众看,是黑桃3。如此下去,观众看到放在桌子上牌的顺序是:黑桃 A 2 3 4 5 6 7 8 9 10 J Q K红桃 A 2 3 4 5 6 7 8 9 10 J Q K问魔术师手中牌的原始顺序是什么?*问题分析与算法设计本题可在上题的基础上进行编程,不同的在于计数的方法和牌的
原创
发布博客 2022.01.18 ·
21 阅读 ·
0 点赞 ·
0 评论

约瑟夫问题这是17世纪的法国数学家加斯帕在《数目的游戏问题》中讲的一个故事:15个教徒和15 个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是想了一个办法:30个人围成一圆圈

*问题分析与算法设计约瑟夫问题并不难,但求解的方法很多;题目的变化形式也很多。这里给出一种实现方法。题目中30个人围成一圈,因而启发我们用一个循环的链来表示。可以使用结构数组来构成一个循环链。结构中有两个成员,其一为指向下一个人的指针,以构成环形的链;其二为该 人是否被扔下海的标记,为1表示还在船上。从第一个人开始对还未扔下海的人进行计数,每数到9时,将结构中的标记改为0,表示该人已被扔下海了。这样循环计数直到有15个人被扔下海为止。*程序说明与注释#include<stdio.h>
原创
发布博客 2022.01.16 ·
125 阅读 ·
2 点赞 ·
1 评论
加载更多