随笔分类 -  NOIP常用算法过关

NOIP常用算法和思想,是NOIP的进阶阶段,也是常考内容。学习和掌握他是很必要的。
摘要:【题意描述】 George用相同的长度棍子,将他们随机切成最多64个单位的长度,现在,他想回到原来的状态,但他忘了他原来的多少根,以及他们原本是多长。请帮助他和设计一个程序,计算最小的可能的原始长度。所有长度均大于零的整数。 【输入】 输入包含2行的块。第一行:切成多少根,最多有64根。第二行切成的 阅读全文
posted @ 2016-03-11 08:00 九江镇中 阅读(338) 评论(3) 推荐(0)
摘要:[问题描述] 很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。这让很多学生很反感。 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。 [输入] 本题目包含多组测试,请处理到文件结束。在每个测试 阅读全文
posted @ 2016-03-08 08:08 九江镇中 阅读(417) 评论(2) 推荐(0)
摘要:归并排序时间复杂度:O(nlogn)注意:1.其他排序算法的空间复杂度是O(1),而归并排序的空间复杂度很大,为O(n)。2.下面的end是“末尾索引+1”,即数列末尾要留一个空位。首先看图:归并排序中中两件事情要做: 第一: “分”, 就是将数组尽可能的分,一直分到原子级别。 ... 阅读全文
posted @ 2015-12-30 16:03 九江镇中 阅读(216) 评论(0) 推荐(0)
摘要:插入排序:有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度... 阅读全文
posted @ 2015-12-26 07:14 九江镇中 阅读(264) 评论(0) 推荐(0)
摘要:堆排序:要知道堆排序,首先要了解一下二叉树的模型。下图就是一颗二叉树,具体的情况我后续会分享的。那么堆排序中有两种情况(看上图理解): 大根堆: 就是说父节点要比左右孩子都要大。 小根堆: 就是说父节点要比左右孩子都要小。那么要实现堆排序,必须要做两件事情: 第一:构建大根堆。 首先上图... 阅读全文
posted @ 2015-12-24 09:45 九江镇中 阅读(456) 评论(0) 推荐(0)
摘要:选择排序,包括“直接选择排序”和“堆排序”。上次我们对比了冒泡排序和快速排序。由于算法不一样,效率也完全不一样。可以快排有他得天独厚的优势。今天我们再来看一下直接选择排序,让他跟堆排序进行一次VS ,也让我们也感受一下他们的优劣。1.直接选择排序:先上图:说实话,直接选择排序最类似于人的本能思想,比... 阅读全文
posted @ 2015-12-23 21:09 九江镇中 阅读(231) 评论(0) 推荐(1)
摘要:既然能把冒泡时间复杂度为O(n2),经测试1秒内只能排17000个数据。但现实的数据往往是十万级和百万级,怎么办,一个新的排序产生了,他就是快速排序。快速排序算法如下:从图中我们可以看到:left指针,right指针,base参照数。其实思想是蛮简单的,就是通过第一遍的遍历(让left和right指... 阅读全文
posted @ 2015-12-22 20:45 九江镇中 阅读(264) 评论(0) 推荐(1)
摘要:首先排序分为四种: 交换排序: 包括冒泡排序,快速排序。 选择排序: 包括直接选择排序,堆排序。 插入排序: 包括直接插入排序,希尔排序。 合并排序: 合并排序。冒泡排序:首先我们自己来设计一下“冒泡排序”,这种排序很现实的例子就是:我抓一把沙仍进水里,那么沙子会立马沉入水底,沙子上... 阅读全文
posted @ 2015-12-21 22:17 九江镇中 阅读(280) 评论(0) 推荐(1)