基础算法c++
冰冰糖yyy
不要因为希望去坚持,要坚持的看到希望。
展开
-
透彻理解辗转相除法
一、理解今天终于对辗转相除法有了一个透彻的理解!!!接触过一些算法的应该都知道辗转相除法是求最大公约数的一个方法。那么为什么这种方法可以求出来呢?我们先来假设a,b的最小公约数为g,那么我们可以这样表示a=m*g,b=n*g;(m,n为整数)(*)a=b*k+r;(k,r为整数)(**)现在我们用(*)中的a,b替换(**),得到m*g=n*g*k+r;上述式子变形得到r=g*(m-n*k);此时可以看出a,b的最大公约数也是b,r的最大公约数。然后不断缩小规模,直到.原创 2021-03-04 22:43:44 · 1837 阅读 · 2 评论 -
散列查找
1.定义 在进行查找时,在记录的存储位置与它的关键字之间建立一个确定的对应关系h,以线性表中每个元素的关键字K为自变量,通过函数h(K)计算出该元素的存储位置,我们将h函数称为散列函数或哈希函数。这种查找方法称为散列查找。2.自己实现的 #include<iostream>#include<cstdio>using namespace std; int arr[100];//定义散列表 bool hashTable[10000000];int...原创 2021-02-21 19:20:22 · 338 阅读 · 0 评论 -
二分查找
一、自己实现的#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int arr[100];//二分查找 bool BinarySearch(int n, int target){ int left = 0; int right = n-1; while(left <= right){ int middle = left + (righ.原创 2021-02-20 21:55:02 · 189 阅读 · 0 评论 -
基于排序算法的特性划分的排序
一.基于排序算法的特性,大概可分为以下三种二.例题1.线性排序输入 :5 31 -4 6 -3 5输出:6 5 1分析题目:基于比较的排序的算法f时间复杂度为O(nlogn),给定范围的线性排序需要O(n);本题元素给定了范围,所有的值都在[-500000,500000],则本题可通过线性排序来实现。以后做题时需注意排序的数据是否有范围哦!代码如下:#include<iostream>#include<cstdio>#.原创 2021-02-19 22:01:18 · 206 阅读 · 0 评论