算法设计与分析
文章平均质量分 65
__Wedream__
Keep learning!
展开
-
排序算法代码仓库
经典排序算法插入排序#include <iostream>#include <algorithm>#include <cstdio>using namespace std;const int N=1e6+1000;int n;int a[N];void insert_sort(){ for(int i=2; i<=n; i++) { if(a[i]<a[i-1]) {原创 2022-03-28 19:38:12 · 1007 阅读 · 0 评论 -
高精度乘法 (精简易懂版)
高精度乘法模板,通俗易懂,方便记忆。原创 2022-03-12 11:02:08 · 2301 阅读 · 4 评论 -
逆序对个数(归并排序)
数对 (归并排序)题目链接:https://ac.nowcoder.com/acm/contest/27274/H来源:牛客网Problem Description链接:https://ac.nowcoder.com/acm/contest/27274/H来源:牛客网在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。比如一个序列为4 5 1 3 2, 那么这个序列的逆序数为7,逆序对分别为(4, 1),原创 2022-02-03 20:23:46 · 1354 阅读 · 0 评论 -
链表的加法
链表是一种递归的数据结构,它或者为空,或者是指向一个结点的引用,该节点还有一个元素和一个指向另一条链表的引用。链表是一种线性表,但它不像顺序表那样连续存储元素,而是在每一个节点里存到下一个节点的指针。原创 2021-03-21 21:21:33 · 373 阅读 · 0 评论 -
逆波兰表达式求值(stack)
逆波兰表达式是一种后缀表达式,所谓后缀就是指算符写在后面。逆波兰表达式主要有以下两个优点:一是去掉括号后表达式无歧义;二是适合用栈操作运算:遇到数字则入栈;遇到算符则取出栈顶两个数字进行计算,并将结果压入栈中。原创 2021-03-20 13:16:14 · 401 阅读 · 2 评论 -
分治法找两个序列中找第k小
在计算机科学中,分治法是建基于多项分支递归的一种很重要的算法范型。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础,如排序算法(归并排序、快速排序)、傅立叶变换(快速傅立叶变换)。另一方面,理解及设计分治法算法的能力需要一定时间去掌握。正如以归纳法去证明一个理论,为了使递归能够推行,很多时候需要用一个较为概括或复杂的问题去取代原有问题。而且并没有一个系统性的方法去适当地概括问题原创 2020-11-11 00:05:36 · 1183 阅读 · 0 评论 -
分治法求众数
分治法求众数Problem Description给定含有n个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。例如,S={1,2,2,2,3,5}。多重集S的众数是2,其重数为3。求众数方法很多,现要求你用分治算法来试一试,并分析其效率。编程任务:对于给定的由n个自然数组成的多重集S,采用分治算法编程计算S的众数及其重数。Input第1行多重集S中元素个数n;接下来的一行为集合S,有n个自然数。( n < 1000000 )Out原创 2020-11-08 10:29:52 · 14586 阅读 · 21 评论 -
输出所有组合(二进制枚举)
输出所有组合(二进制枚举)Problem Description题目:输入一个字符串,输出该字符串中字符的所有组合。举个例子,如果输入abc,它的组合有a、b、c、ab、ac、bc、abc。采用递归的方法来实现所有组合的输出。Input输入一个串长n和字符串,n<10。字符串不含重复元素。Output输出该字符串中字符的所有组合,并在每个组合前标示序号。注意:为了输出的组合有序而便于OJ系统评判,约定无论输入的初始字符串是什么顺序的,最后输出都按元素升序进行挑选的组合。原创 2020-11-07 22:49:05 · 944 阅读 · 0 评论