题目不难: 思路一(排序取两端) 先排序,最后三个数相乘即可。(很快就想到了,但是没想全面 [😂] ) 缺陷:没有考虑到有负数的情况,当至少有两个负数时,需要判断 最大数乘两个最小的负数 和 三个最大数相乘的大小,返回大的。 代码如下: 复杂度分析 主要是排序比较浪费 时间复杂度:O(n*logn ...
分类:
编程语言 时间:
2017-08-17 00:41:35
阅读次数:
211
一、冒泡排序 1、原理:两两比较,将较大或者较小的数据上浮,实现升序或者降序。 2、实现代码 3、算法分析 时间复杂度分析 最好的情况下是正序,一趟扫描即可完成排序,所需的比较次数和移动次数分别为: , 。所以,冒泡排序最好的时间复杂度为 。 最坏的情况下是反序,需要进行n-1趟排序,所需的比较次数 ...
分类:
编程语言 时间:
2017-08-11 20:29:21
阅读次数:
185
分析算法的时间复杂度: 算法的时间复杂度就是反应了程序执行时间随着输入规模增长而增长的量级,这个标准可以很好的反映出算法的优劣性质。 算法的频度: 一个算法执行所耗费的时间完全可以以程序执行的次数进行估算,程序执行的次数越多,时间复杂度也就越复杂,也就是说算法花费的时间与算法中语句执行的次数成正比例 ...
分类:
其他好文 时间:
2017-07-16 23:34:46
阅读次数:
273
附:素数筛法原理(具体出处记不得了,可以留言我补上) 【算法-ACM-素数】求素数的算法及其复杂度分析 关于搜寻一定范围内素数的算法及其复杂度分析 ——曾晓奇 关于素数的算法是信息学竞赛和程序设计竞赛中常考的数论知识,在这里我跟大家讲一下寻找一定范围内素数的几个算法。看了以后相信对大家一定有帮助。 ...
分类:
其他好文 时间:
2017-07-14 23:13:58
阅读次数:
349
题目: https://loj.ac/problem/516 分析: 每次将一个颜色更改为另一个颜色相当于将两个集合合并 然后对于答案的更新,一个点插入到一个集合中,那么可能更新答案的就是其前驱节点或者后继节点 所以直接用set启发式合并就ok了 时间复杂度O(nlog^2n+m) ...
分类:
其他好文 时间:
2017-07-05 13:26:36
阅读次数:
144
学习一个算法, 需要弄清一些地方: ① 问题与算法的概念; ② 算法, 思维轨迹 ③ 实现, 思维轨迹; ④ 复杂度分析; ⑤ 应用. KMP算法 字符串匹配与KMP算法 为了方便弄清问题, 应该从特例入手. 设 A = " ababababb " , B = " ababa " , 我们要研究下面 ...
分类:
其他好文 时间:
2017-07-03 22:41:40
阅读次数:
155
学习一个算法, 需要弄清一些地方 ① 问题与算法的概念 ② 算法以及其思维轨迹 ③ 实现以及其思维轨迹 ④ 复杂度分析 ⑤ 应用 KMP算法 字符串匹配与KMP算法 为了方便弄清问题, 应该从特例入手. 设 A = " ababababb " , B = " ababa " , 我们要研究下面三个递 ...
分类:
其他好文 时间:
2017-07-03 17:18:34
阅读次数:
259
对于一个算法或者数据结构的学习, 我们首先要弄清它的概念, 然后理解它的构建, 进而是实现和复杂度分析, 最后考虑如何应用它. 现在学习的是 SAM, Suffix Automaton, 后缀自动机. 推荐陈立杰的冬令营讲稿. https://wenku.baidu.com/view/90f22ee ...
分类:
其他好文 时间:
2017-06-30 09:43:47
阅读次数:
185
每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最前(最后),直到所有待排序的数据元素排完。选择排序是不稳定的排序方法。 选择排序是给每一个位置选择当前元素最小的,比方给第一个位置选择最小的,在剩余元素里面给第二个元素选择第二小的,依次类推。直到第n-1个元素,第n个 ...
分类:
编程语言 时间:
2017-06-20 14:56:16
阅读次数:
100
摘要 本文论述了在算法分析领域一个重要问题——时间复杂度分析的基础内容。本文将首先明确时间复杂度的意义,而后以形式化方式论述其在数学上的定义及相关推导。从而帮助大家从本质上认清这个概念。前言 通常,对于一个给定的算法,我们要做 两项分析。第一是从数学上证明算法的正确性,这一步主要用到形式化证明的方法 ...
分类:
编程语言 时间:
2017-06-13 17:23:49
阅读次数:
116