摘要:
选择排序就是经过多次查找找到还未排序 部分的最小值,并与未排序部分的第一个数比较,如果第一个数较大,交换他们的值,否则不交换。直到序列有序; 图解: 动图演示: 由这个动图可以直观的看出来每一趟做了什么,是这样排序的。 c++代码: 阅读全文
摘要:
深度优先搜索简称深搜,从起点出发,走过的点要做标记,发现有没走过的点,就随意挑一个往前走,走不了就回退,此种路径搜索策略就称为“深度优先搜索”,简称“深搜”。 如上面的图所示:加入我们要找一个从V0到V6的一条最短的路径。我们可以看到有许多的路我们可以走。 V0——V3——V5——V6; V0——V 阅读全文
摘要:
快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此 阅读全文
摘要:
题目链接:https://www.luogu.org/problem/P1303 题目描述 求两数的积。 求两数的积。 输入格式 两行,两个数。 两行,两个数。 输出格式 积 积 输入输出样例 输入 #1复制 1 2 输出 #1复制 2 输入 #1复制 1 2 输出 #1复制 2 说明/提示 每个数 阅读全文
摘要:
高精度减法跟高精度加法一样,都是超过了(long long)的范围,也要转化为字符串来处理: 题目链接:https://www.luogu.org/problem/P2142 高精度减法 高精度减法 输入格式 两个整数a,b(第二个可能比第一个大) 两个整数a,b(第二个可能比第一个大) 输出格式 阅读全文
摘要:
什么是大整数?所谓大整数就是特别大的是(超出long long的范围),这个时候我们常用的a+b就不能用了; 但是我们可以将整数转化为字符串来处理,利用加法的原理,一位一位的来加,因为字符串没有长度的限制; 题目链接:https://www.luogu.org/problem/P1601 题目描述 阅读全文
摘要:
二分查找 二分查找也叫折半查找。要求这个序列是有序序列。 二分查找的时间复杂度为O(logn),比顺序查找要快一些,比具体步骤如下: 1:找到序列的中点,比较目标数与序列中点对应的数的大小。 2:目标数大于序列中点对应的数,序列的起点变为原序列的中点加1一; 目标数小于序列中点对应的数,序列的终点变 阅读全文
摘要:
斐波那契查找 斐波那契查找也是折半查找的一种改良版;斐波那契查找最主要的就是找mid这个点; 在该种查找算法中,我们要找的mid这个点为数组中的黄金分割点,要求黄金分割点 我们就要用到斐波那契数列了;我们可以看一下这个数列:1,1,2,3,5,8,13,21,34,55..........; 可以看 阅读全文
摘要:
分块查找(索引表查找) 分块查找是折半查找和顺序查找的一种改进方法,折半查找虽然具有很好的性能, 但其前提条件时线性表顺序存储而且按照关键码排序,这一前提条件在结点树很 大且表元素动态变化时是难以满足的。而顺序查找可以解决表元素动态变化的要求, 但查找效率很低。如果既要保持对线性表的查找具有较快的速 阅读全文
摘要:
插值查找 插值查找其实是折半查找的升级版,在我们写折半查找的时候不知道大家想过没有 为什么每次要折一半呢?1/4不行吗?1/8不行吗?这样我们就可以想到,是不是可 以找到更精准的“折半”的方式来处理呢。 在折半查找中 mid=(high+low)/2; 转化一下变成:mid=low+1/2*(hig 阅读全文