![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
信息学奥赛常用算法
noipBar
分享信息学奥赛考试信息,学习心得,教学心得
展开
-
信息学奥赛系列教程:高精度加法
高精度加法模拟常规的立竖式相加方法,各位对齐,诸位相加,如果相同位数上的数字大于10则向前一位进一高精度加法需要注意的问题:1、运算法则 同传统立竖式相加的方法,诸位对齐相加2、进位 两种策略,一种是边计算边进位,第二种方式,加完以后进位 边计算边进位,如下图所示: 上图中,数组第一位存储数的长度最后进位,如下图...原创 2018-11-23 21:31:27 · 640 阅读 · 0 评论 -
信息学奥赛系列教程:插入排序
插入排序: 有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序。插入排序类似于打扑克时摸排的情形,每次将摸到的牌按花色和大小插入适当的位置,如下图所示:插入排序基本思想: 每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。排序过程如下图所示插入排序的代码实现:#i...原创 2018-11-28 09:04:57 · 474 阅读 · 0 评论 -
信息学奥赛系列教程:冒泡排序
排序:按照从小到大,或者从大到小的顺序,将杂乱无章的数据进行整理的过程,叫排序,排序一般在一维数组中进行。生活中排序的例子:上体育课的时候,老师把一排同学按身高进行排序。 考试后,老师按分数从高到低对同学的成绩排名次。冒泡排序原理和实现步骤:方法:从前到后依次扫描数组元素,扫描一次称为一趟。 规则:每趟扫描时,数组元素前一个和后一个相比较,如果次序和要求的...原创 2018-11-27 11:21:34 · 1362 阅读 · 2 评论 -
信息学奥赛算法课程目录
第一课、高精度计算1、高精度计算 点这里2、高精度加法 点这里3、高精度减法 点这里4、高精度乘法 点这里5、高精度除法 点这里第二课、排序算法1、冒泡排序 点这里2、选择排序 点这里3、插入排序 点这里4、桶排序 点这里5、快速排序 点这里...原创 2018-11-27 09:11:15 · 1453 阅读 · 0 评论 -
信息学奥赛系列教程:快速排序
快速排序: 取待排序序列中的某个元素作为基准,通过一趟,将待排元素分为左右两个子序列,左序列中的值小于等于基准数,右序列中的数大于等于基准数。分别对左右两个子序列进行相同的排序,最后将左右合并起来。快速排序步骤:1、基数的选取:一般选择中间数作为基数 中间数下标:数组长度/2,下图中,6为中间2、从两头开始,分别放一个指针(哨兵),两个...原创 2018-11-30 09:34:52 · 1062 阅读 · 2 评论 -
信息学奥赛系列教程:桶排序
桶排序: 顾名思义,桶排序就是将要排序的元素装入“桶”中,进行排序,和前面介绍的排序算法相比,桶排序属于最简单的排序。对数组元素进行排序时,数组下标,就是“桶”。 桶排序的前提条件:待排序的值在一个明显有限的范围内。 设计有限个桶序,待排的值直接转入对应的“桶”,可以装多个,桶号就是待排序的值。顺序输出各桶的值,将得到有序的序列。桶排序代码实现...原创 2018-11-30 09:08:19 · 647 阅读 · 0 评论 -
信息学奥赛系列教程:高精度除法
我们平时做除法时,采用立竖式的方法计算:被除数从高位开始,和被除数对齐,诸位“试商”,“试商”后被除数减去“试商”的数的乘积,如下图所示:采用计算机做高精度除法时,模拟日常除法的步骤。但计算机不可能做“试商”,这时,我们可以采用减法来模拟"试商"的过程。算法的步骤如下:1、将除数移动和被除数对齐,位数不够时,补0,2、利用被除数减去除数,一直减到被除数小于除数,减的次数,就...原创 2018-11-26 10:26:18 · 523 阅读 · 0 评论 -
信息学奥赛系列教程:高精度计算
为什么要需要高精度计算? 每种计算机语言的基本数据类型,都有一定的范围限制,在一些科学计算中,当需要运算的算数(加数、减数、乘数、除数)大于基本数据类型所能表示的范围时,需要通过算法来实现这些运算,比如200位的两个数相乘高精度计算需要解决的问题:1、数据的输入和存储 通常情况下,采用字符或者字符串方式输入,用数组来存储输入数的每个位数上的数字 如“...原创 2018-11-22 18:31:16 · 1236 阅读 · 0 评论 -
信息学奥赛系列教程:高精度乘法
高精度乘法,模拟常规的立竖式计算,乘数每一位乘被乘数每一位,从十位开始,错位相加如下图所示:因为结果数组只有一个,省略去中间每次相乘的中间结果,直接把每次乘积进行累加在高精度计算中的进位问题,和高精度加法相同,可以在计算的同时进行进位,也可以最后进行进位结果位数的确定:两个数相乘,最大长度是两数的长度相加。高精度乘法代码实现如下:#include <iostre...原创 2018-11-23 22:12:39 · 603 阅读 · 1 评论 -
信息学奥赛系列教程:高精度减法
高精度减法,模拟常规立竖式计算,各位数对齐,从各位开始减,如果不够,向一位借一作10。如下图所示:高精度减法需要注意的问题:对两个数做比较,根据前面介绍的高精度数据输出,如果两个数长度不同,则长度较长的数作为被减数如果两个数长度相同,从高位开始到低位,每位数字相比较,数字较大的数一定大。高精度减法算法实现如下:#include <iostream>#...原创 2018-11-23 21:55:50 · 428 阅读 · 0 评论 -
信息学奥赛系列教程:选择排序
选择排序:选择排序(Selection sort)是一种简单的排序算法。它的基本思想是每一次从待排序数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。如下图所示:对5,3,4,1,6,2进行排序,过程如下:选择排序的代码实现:#include <...原创 2018-11-28 09:08:59 · 517 阅读 · 0 评论