![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法学习
weixin_32050837
这个作者很懒,什么都没留下…
展开
-
旅行商问题(贪心算法)
旅行商问题对机械加工领域的路径规划有着十分重要的作用。在路径规划要求不严格的情况下,用贪心算法非常容易实现旅行商问题,但是只能获得局部的最优解。算法实现如下:1.选取一个0点,从0点开始搜素最近点12.以1点为基础,继续搜索最近点3.重复步骤2,直到所有点都搜索完毕。注意:所有的点只能进行一次搜索,不能重复。实现代码如下:#include <iostream>#include <ctime>using namespace std;#define n 4i原创 2021-10-14 11:26:21 · 2779 阅读 · 0 评论 -
快速排序递归实现
快速排序跟冒泡排序的原理一致,都是比较数列的值,大小交互,但是冒泡排序是对每一个元素进行比较,效率比较低。快速排序减少了比较的次数,增加了排序的效率。快速排序的原理比较简单,就是从数列中指定一个基准数,把数列中小于基准数的元素放在基准数的右边,大于基准数的元素放在基准数的左边,然后将数列从基准数一分为二继续进行上述操作,快速排序的实现:1.任意指定一个基准数,记为arr[start]。(一般是数列第一个数)2.分别在数列头尾定义头指针i,尾指针j。3.由于头指针是基准数,根据原理,基准数右侧的元素必须原创 2021-06-26 18:19:02 · 151 阅读 · 0 评论 -
归并排序的递归和迭代实现
归并排序的原理网上很多,基本思路是用二分法的思想将整个数列分到直至2位的最小子序列,当然当整个数列总数是奇数时会出现单独一个元素,此种情况在有些人给的代码中并不能达到效果,作为初学者,还是花了一点时间写了一下,测试几个数列后还是可以的,因此记录一下。递归实现二分法最容易想到的实现方式就是递归,递归就是自己调用自己,要求各子过程的实现具有相似的实现方法;递归是有去有回,因此只需要考虑如何将问题划分到更小的子过程,实现方式在划分后实施,就可以实现问题到更小的规模,然后计算过程从更小的子过程到整个过程。对于原创 2021-04-04 20:20:31 · 193 阅读 · 0 评论 -
插入排序和希尔排序C++实现
1.插入排序插入排序顾名思义是将待排数据插入已经排列好的数据中即有序数列中。实现原理是假设在一个总数为M的数列A中,前N-1个数据是有序数列,将第N个数插入前N-1个有序数列中。实现过程如下:遍历排列好的N-1个数据,假设 max = A[M] ,比较有序数列中最后一个元素即A中第N-1个元素即A[N - 1] > max,此时需要继续向前遍历比较A[N - 2] > max ?,假设一直到第j个元素,A[j] <= max,结束遍历,将max放入A[j],同时将j~N-1个元素依原创 2021-04-02 11:07:17 · 170 阅读 · 0 评论 -
1.1.15编写一个静态方法histogram(),接受一个整形数组a[]和一个整数M为参数,并返回一个大小为M的数组,其中第i个元素的值为整数i在参数数组中出现的次数。C++实现
实质是计算数组中的重复个数int* histogram(int a[], int M) { int * b = new int[M]; vector<int> c; for (int i = 0; i < M; i++) { int count = 0; for (int j = i; j < M; j++) { bool repeat = false; for (int k = 0; k < c.size(); k++) { if (c[k原创 2021-03-02 23:32:21 · 111 阅读 · 0 评论