![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法笔记
切克脑
这个作者很懒,什么都没留下…
展开
-
关于sort()函数编写cmp函数
sort()函数中,一般是用于数组中整形数据的排序,但是 遇见结构体中有多个整形数据,sort的功能就开始迷糊了,所以我们需要在结构体中定下需要比较哪组,第一:sort(begin,begin+n)第二:利用cmp进行倒序,升序;bool compare(int a,int b){ return a如果改为return a>b,则为降序}sort(a原创 2017-07-28 17:30:45 · 1046 阅读 · 0 评论 -
再聊--》归并排序(小和问题求解)
小和问题在一个数组中, 每一个数左边比当前数小的数累加起来, 叫做这个数组的小和。 求一个数组的小和。例子:[1,3,4,2,5]1左边比1小的数, 没有;3左边比3小的数, 1;4左边比4小的数, 1、 3;2左边比2小的数, 1;5左边比5小的数, 1、 3、 4、 2;所以小和为1+1+3+1+1+3+4+2=16----------------------------...原创 2019-07-31 15:39:26 · 109 阅读 · 0 评论 -
再聊--》归并排序
归并排序利用递归的思想,每次递归的将数组分成两个部分,每一部分无限再次递归分成两个部分。就比如5,3,1,6,2这个数组第一次划分为5 , 3 ,1 和 6 ,2第二次划分为{5,3 和1 } 6和2第三次划分为5, 3 1...原创 2019-07-31 11:28:06 · 98 阅读 · 0 评论 -
再聊--》插入排序
插入排序默认左边都是已经排好序的,类似于我们平时生活中打扑克,抽一张扑克,从已经排好序的扑克找出需要插入的位置,从右到左一次比较,找到合适的位置,插入进去。public static void insertionSort(int[] arr) { if (arr == null || arr.length < 2) { return; } for (int i = 1...原创 2019-07-31 10:48:05 · 82 阅读 · 0 评论 -
再聊--》选择排序
选择排序和冒泡排序差不多,选择排序是每次遍历找出比当前元素更小的进行替换。每次循环过后,在头位置是最小的元素。public static void selectionSort(int[] arr) { if (arr == null || arr.length < 2) { return; } for (int i = 0; i < arr.length - 1...原创 2019-07-31 10:45:02 · 71 阅读 · 0 评论 -
再聊--》冒泡排序
冒泡排序作为最基础的排序是必须得熟练掌握的话不多说先上代码public static void bubbleSort(int[] arr) { if (arr == null || arr.length < 2) { return; } for (int e = arr.length - 1; e > 0; e--) { for (int i = 0;...原创 2019-07-31 10:40:27 · 93 阅读 · 0 评论 -
树的子结构-牛客剑指offer
题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)牛客上的一道关于树的题,觉得自己在树这一块有点弱鸡,写下来加深一下印象分析:判断B树是不是A树中的一部分,可以理解为。(他们说山东人特别喜欢倒装,看来是的)思路:首先判断B树的头结点与A树的头结点是否为空,空的话就直接false了,如果不为空,判断是否相等,如果相等的话,在判断左右...原创 2019-05-14 20:44:15 · 66 阅读 · 0 评论 -
快速幂
比如我们在求解a的b次方的时候,最笨的方法就是递归实现,但是他的复杂度巨大(a连乘b次),快速幂可以达到O(logn),效率大大缩小,为了加深一下记忆,我们来一起分析一下这个快速幂是怎么回事比如我们在求4的11次方的时候,应用快速幂的概念。将11可以装换成二进制的1011,所以我们4的11次方可以表示位4的(1011)次方,进一步转换可以表示为4的(1000)次方*4的(0010)次方*4的(...原创 2019-05-14 16:25:34 · 184 阅读 · 0 评论 -
数据结构之树的操作
话不多少 q:690217293 欢迎交流//_____________________________demo.cpp#include #include "Tree.h"#include using namespace std;int main(){ Node *node1 =new Node(); node1->index=1; node1->dat原创 2017-12-03 21:07:40 · 146 阅读 · 0 评论 -
用数组解决数值大的数的阶乘!!
起初这是C++老师,布置的道题,做了3天 也没做出来,最后还是听别人的意见改的,原因是自己的想法太复杂了 ,而且 乘法还是没学好,没用过这样的乘法,也不知道,自己太菜鸡了!!!废话不多说了,开始吧题目:解决高位数的阶乘问题,例如50的阶乘分析:无论是用int 还是long long 最终结果还是会越界,导致输出异常。;直接丢代码#include #include #i原创 2017-09-13 23:58:14 · 491 阅读 · 0 评论 -
背包初级+贪心
题意:有n个重量和价值分别为w,v的物品,从这些物品中挑选出重量不超过W的物品,求所需有挑战方案中价值总和的最大值。input: n=4; {w,v}=(2,3)(1,2)(3,4)(2,2)W=5;output:7(所选0,1,3物品)一般的写法:这样会出现重复搜索,降低效率,int rec(int i,int j){ int res; if原创 2017-09-03 23:38:39 · 167 阅读 · 0 评论 -
4岁开始升牛,9岁死----分支简单算法
题意:有一个农场,第一年有一头牛为1岁,随后每年长一岁,到四岁的时候开始升牛,一年生一头,生下来的牛为最初为1岁,等牛为9岁的时候,死亡;分析:第一年的时候为1头,我们利用一个二维c数组,前端记录第几年 后端记录每头牛的年龄,我们一开始吧c数组初始化为0,一旦碰见+1之后大于等于4的,向后扩一个位置,来记录生下的那头牛的年龄,while循环一直到后面数组是0结束,大体思路就是那样,细节方面这题原创 2017-09-03 23:20:49 · 360 阅读 · 0 评论 -
荷兰国旗问题(快排基础)
问题描述:现在有若干个红、白、蓝三种颜色的球随机排列成一条直线。现在我们的任务是把这些球按照红、白、蓝排序。简述:我们需要得到一个中间值(白色)作为分界线,将两边分隔开。我们将此问题类比成: 给定一个数num,把比他小的放在左边,比他大的放在右边。public static int[] helan(int arr[],int L,int R,i...原创 2019-07-31 16:41:22 · 111 阅读 · 0 评论