-
2021-04-06 19:50:13
前引
博主最近在看算法第四版 然后发现里面用的是java语言写的
但是觉得 这个算法第四版其实真的就是加强版《数据结构与算法》
编程正所谓编程 我认为的是编程在前 看书为辅
所以打算书上绝大部分有意义的算法都再重新造一遍轮子 总结一遍
不然看书看得懂 看完留下的终究是很少很少的记忆
补前引
现在是4/26晚上的八点半了 从我开始写第一篇最开始的
最大公约数算法实现开始已经过去了21天 差不多三周了
那这本算法第四本也差不多看完了
第六章我本来还想写一下B树 B+树的
但是刚刚看了看半个小时左右的B树视频 还是一个印度口音的老外讲解的
但是想了想 就算了
因为现在确实没有看那个的动力
B 和 B+树看了看 文件操作和数据库的关系很大
等我之后学到了文件操作和数据库的时候
那个时候再统一学一遍 B和B+树吧 就这样吧2022/2/22 笔者留
这部分写这些东西的时候
C++水平和现在笔者写的时候相还是挺远的 那个时候写的时候基本上就是属于 对于C++特性 0了解 最初步的c + stl user 所以各位读者对于一个原来笔者的初学者水平 如有问题或者代码写的不好 请见谅
第一章
C++ 最大公约数算法实现(第一章)
C++ 二分查找算法实现(第一章)
C++ 背包类似集合数据类型处理STL库 弹珠处理(第一章)
C++ 先进先出队列银行排号系统STL库实现(第一章)
C++ 下压栈邮箱管理实例STL库实现(第一章)
C++ 非定容栈非链表版功能实现 只支持int型存储(第一章)
C++ 非定容栈链表实现支持多类型(第一章)
C++ 队列链表实现支持多类型(第一章)
C++ 背包链表实现支持多类型(第一章)
C++ 迭代反转链表实现(第一章)
C++ josephus幸存者问题STL库vector实现(第一章)
C++ 动态连通性实例算法实现 路径压缩含测试示例(第一章)
第二章
C++ 选择排序代码实现(第二章)
C++ 插入排序代码实现(第二章)
C++ 希尔排序代码实现(第二章)
C++ 归并排序从顶至下递归排序代码实现(第二章)
C++ 快速排序递归代码实现(第二章)
C++ 快速排序非递归代码实现(非递归版本)(第二章)
C++ 优先队列堆排序大顶堆代码实现(第二章)
第三章
C++ 二叉搜索树代码实现 无删除操作(第三章)
C++ 手撕AVL树(含旋转代码讲解 + 例题)(第三章)
C++ 手撕红黑树(红黑树介绍 + 红黑树插入代码详细讲解)(第三章)
C++ 红黑树无代码实现 红黑树的认识和理解面试复习用(第三章)
第四章
C++ 邻接表STL实现(第四章)
C++ DepthFirstSearch BreadthFirstSearch代码模式示范实现(第四章)
C++ 面试常考拓扑排序理解(第四章)
C++ 面试常考算法最小生成数 Kruskal算法和Prim算法理解(第四章)
C++ 面试常考算法Dijkstra + Floyd最小生成树算法代码 例题+算法理解(第四章)
第五章
C++ 字符串排序 键索引计数法排序示例代码实现+算法理解(第五章)
C++ 低位优先排序LSD排序示例代码实现+算法理解(第五章)
C++ 高位优先排序MSD排序示例代码实现+算法实现(第五章)
C++ 字典树 单词查找树示例代码实现(第五章)
C++ KMP子字符串查找算法理解+示例代码(第五章)
C++ 手撕KMP字符串匹配算法(算法代码讲解 + KMP例题)
第六章
C++ 哈夫曼树与哈夫曼编码算法理解+示例习题(第五章)
C++ B-树 B+树 的数据结构理解(等什么时候学数据库 和底层知识串一起了再更新了)
附加
C++ 面试常见缓存算法LRU理解代码实现+习题博客
C++ 二分查找upper_bound lower_bound算法实现+习题博客更多相关内容 -
c/c++算法实现多路pcm混音源码
2020-05-28 16:21:13c/c++算法实现多路pcm混音源码 -
canny边缘检测算子,C++算法实现
2018-08-29 11:29:36canny边缘检测算子,运用C++来写的,后面还有许多其他的边缘检测算子更新 -
迷宫问题的C++算法实现
2017-04-25 20:59:58迷宫问题的C++算法实现 -
随机森林 C++ 算法实现
2015-10-09 15:50:49树类型为ID3.0 分类结果转存到文档 也可显示在dos界面 初级适用 -
归并排序C++算法实现
2019-03-31 15:41:17定义:归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子...定义:归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。
简单的来说,归并排序主要分为三步,一是对数组的划分,二是对数组的排序,三是对数组的合并。划分的大小是可以随自己的想法而设置,但是一般都是以2为单位,这样最小的一组的排序就比较方便。
具体一个简单的例子:
设有数列{6,202,100,301,38,8,1}
初始状态:6,202,100,301,38,8,1
第一次归并后:{6,202},{100,301},{8,38},{1},比较次数:3;
第二次归并后:{6,100,202,301},{1,8,38},比较次数:4;
第三次归并后:{1,6,8,38,100,202,301},比较次数:4;
总的比较次数为:3+4+4=11;
逆序数为14;
在利用算法实现的时候,需要利用递归的思想,函数的入口是整个数组,不断进行划分,直到划分的数组只剩下一个或两个元素为止,对这一组进行排序后,再按原来划分的大小还原并排序,这里利用一个新的数组比较方便,将两个排序后的数组,再从小到大一个一个放入新的数组。
具体代码:
#include<iostream> #include<algorithm> using namespace std; void merge(int *data,int start,int end,int *result) { int left_length = (end - start + 1) / 2 + 1; int left_index = start; int right_index = start + left_length; int result_index = start; while(left_index<start + left_length && right_index <end + 1) //store data into new array { if(data[left_index] <= data[right_index]) result[result_index++] = data[left_index++]; else result[result_index++] = data[right_index++]; } while(left_index < start + left_length) result[result_index++] = data[left_index++]; while(right_index <end+1) result[result_index++] = data[right_index++]; } void merge_sort(int *data,int start,int end,int *result) { if(1 == end - start) //last only two elements { if(data[start] > data[end]) { int temp = data[start]; data[start] = data[end]; data[end] = temp; } return; } else if (end == start) return; //last one element then there is no need to sort; else{ //continue to divide the interval merge_sort(data, start, (end - start + 1) / 2 + start, result); merge_sort(data, (end - start + 1) / 2 + start + 1, end, result); //start to merge sorted data merge(data, start, end, result); for (int i = start; i <= end;++i) { data[i] = result[i]; } } } //example int main() { int data[] = {5,3,6,7,3,2,7,9,8,6,34,32,5,4,43,12,37}; int length = 17; int result[length]; cout << "before sorted:"<<'\n'; for (int i = 0; i < length;i++) cout << data[i]<<' '; cout << '\n' << "after sorted:"<<'\n'; merge_sort(data, 0, length - 1, result); for (int i = 0; i < length;i++) cout << result[i]<<' '; return 0; }
排序实现
-
C++自己实现AES算法
2021-01-20 03:43:25注意:本算法在生成加密key时,使用了md5算法,编译本demo需要依赖 C++自行实现MD5算法 里面的算法。 #ifndef _AES_20140317_H_ #define _AES_20140317_H_ #define Bits128 16 #define Bits192 24 #define... -
各肤色分割方法 C++算法实现
2016-12-09 11:22:43各肤色分割方法 C++算法实现,包括Otsu HSV RGB颜色空间的肤色分割,算法使用opencv实现,VS2010 c++工程 -
C++实现ECC算法
2020-06-15 10:42:59《Theory and Technology of Secure Protocol in Communication Network》作业3:实现ECC算法。实验环境VS2010 -
SIFT 算法 C++ 代码实现(非常实用)
2022-01-07 18:11:52该工程主要是对 SIFT 算法的具体实现,代码中注释非常详细易懂、没有之一,非常适合小伙伴们学习哦!!! -
C++实现分水岭算法(Watershed Algorithm)
2020-08-28 05:01:06主要为大家详细介绍了C++实现分水岭算法Watershed Algorithm,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
c++常用算法实现
2018-05-22 19:35:06罗列了各种常见的c++算法实现,很适合考研、保研机试,软件能力认证考试等的复习 -
RC4加密算法C++实现
2020-04-15 17:38:37C++实现RC4加密算法,以2进制形式输出密钥流和密文到控制台并将结果记录至.txt文件。 用到KSA PRGA算法,最后用异或进行加密/解密。 -
C++完整实现DES算法
2018-11-23 16:00:34DES算法的C++实现,可以输入任意字符,进行加密和解密,命令行界面。 -
C++贪心算法实现活动安排问题(实例代码)
2020-08-25 10:57:40贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。这篇文章主要介绍了C++贪心算法实现活动安排问题,需要的朋友可以参考下 -
用C++实现LRU页面置换算法
2020-06-03 09:24:22使用LRU算法实现页面置换算法。LRU算法基于一种假设,长期不使用的数据,在未来的使用性也不大。因此,当数据占用内存达到一定的阙值时,我们要移除最近最少使用的数据。LRU算法中,使用了一种有趣的数据结构,叫做... -
c++实现的常见缓存算法和LRU
2020-08-31 16:53:29LRU缓存算法也叫LRU页面置换算法,是一种经典常用的页面置换算法,下面这篇文章主要介绍了c++实现的常见缓存算法和LRU,需要的朋友可以参考借鉴,下面来一起看看吧。 -
C++实现遗传算法
2018-02-09 10:38:39给出用c++实现遗传算法的具体步骤,定义了相关的函数,对相关代码进行了详细注释 -
板材下料C++算法实现
2014-06-09 20:54:48C++实现分析最优板材下料问题.其中还有matlab实现,主要使用的是启发式算法。 -
DES加密算法C++实现
2018-06-05 09:39:46DES加密算法C++实现支持多个key输入、支持ECB、CBC填充模式 3、不是.exe程序,是代码段; -
C++算法必备
2019-02-23 16:52:26这是一本涵盖数据结构和算法的书籍,本书所用书籍使用的语言为c++;内容详细,覆盖全面。 -
各种压缩算法C++实现
2019-01-18 11:07:04哈夫曼编码,自适应哈夫曼编码;字典LZW编码;算术编码,输出每个字符的编码,整个字符串的编码以及压缩率 -
RSA_C++实现,rsa算法c语言实现,C,C++
2021-09-10 22:30:10经典的对称加密算法RSA算法的C++实现版本,亲测完美运行 -
RSA算法C++实现源码
2016-11-01 15:40:00RSA算法C++实现源码 -
c++实现SURF算法
2018-03-07 09:33:16c++实现SURF算法,代码资源, 代码需要vs + opencv, 实测vs2013+opencv2.4.10可用 -
使用C++实现全排列算法的方法详解
2020-09-05 07:55:28本篇文章是对使用C++实现全排列算法的方法进行了详细的分析介绍,需要的朋友参考下 -
A星寻路算法c++语言实现
2018-07-27 12:11:50A*算法,A*(A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。算法中的距离估算值与实际值越接近,最终搜索速度越快。c++语言实现 -
c++代码实现tea加密算法的实例详解
2020-08-19 08:48:42主要介绍了c++代码实现tea加密算法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 -
ICP_icp算法C++实现_ICP算法_icp_
2021-09-30 17:33:15三维叶片测量数据的ICP对齐算法,用C++实现 -
C++实现蚁群算法及图形演示
2019-04-14 16:46:11本系统采用C++实现了蚁群算法,同时有图形实时显示,非常适合解决旅商算法Tsp学习