算法笔记
小秦要上进
种瓜得瓜,种豆得豆。
展开
-
排序算法效率比较。编程实现以下几种不同的排序算法(以升序为例):冒泡排序、选择排序、 希尔排序、快速排序,比较不同的排序过程的运行时间。
具体要求:(1)为了消除数据之间差异导致排序效果的影响,使用相同的数组进行排序,方法为:首先创建一个数组,数组长度至少为100000,数组元素取值范围在[0, 100000]之间的随机正整数,并将这个数组复制4份,分别用不同的排序算法进行排序。(2)记录不同排序算法的运行时间。 //四中方法对随机数进行排序 #include<iostream> #include <cstdlib> #include<ctime> #define n 100000 using namesp原创 2020-11-24 19:27:28 · 719 阅读 · 0 评论 -
二分查找
输入n值(1<=n<=1000)、n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。 输入格式: 输入共三行: 第一行是n值; 第二行是n个整数; 第三行是x值。 输出格式: 输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。 输入样例: 4 1 2 3 4 1 输出样例: 0 2 #include<iostream> using namespace std; void sr原创 2020-11-29 23:31:39 · 160 阅读 · 0 评论 -
贪心算法
贪心算法基本要素: (1)最优子结构性质 (2)贪心选择性质 贪心算法都可以用动态规划来做 贪心算法总是作出当前看来最好的选择,也就是说贪心算法并不从整体最优考虑,它所作的选择只是在某种意义上的局部最优选择。虽然贪心算法不能对所有的问题都得到整体最优解,但对许多问题通它都能产生整体最优解。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的很好近似。 从一个大集合中选择到一个小集合中,一般用到贪心算法。 列题: 选取了一道拼题网上的题作为例题来使大家更好的理解贪心算法 装箱问题 假设有N项物原创 2020-11-30 21:40:16 · 138 阅读 · 0 评论 -
贪心算法-多机调度问题
题目: 要求给出一种作业调度方案,使所给的n个作业在尽可能短的时间内由m台机器加工处理完成。约定,每个作业均可在任何一台机器上加工处理, 但未完工前不允许中断处理。作业不能拆分成更小的子作业。 这个问题是一个NP完全问题,到目前为止还没有一个有效的解法。对于这一类问题,用贪心选择策略有时可以设计出较好的近似算法。 可以考虑以下的贪心策略: (1)最长处理时间作业优先的贪心选择策略。 (2)最短处理时间作业优先的贪心选择策略。 (3)作业到达时间优先的贪心选择策略。 假设7个独立的作业由3台机器加工处理,各作原创 2020-12-08 21:40:59 · 1223 阅读 · 0 评论 -
分别用穷举法和欧几里德算法实现求两个整数的最大公约数,并比较算法的效率。
分别用穷举法和欧几里德算法实现求两个整数的最大公约数,并比较算法的效率。 穷举法: 源代码: #include<iostream> using namespace std; int main() { int n,m; int i; int t; cin>>n>>m; if(n<m) { t=n; n=m; m=t; } for(i=m;i>0;i--) { if(n%i==0&&.原创 2020-11-23 17:19:46 · 486 阅读 · 0 评论