![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
《漫画算法-小灰的算法之旅》代码实现
包含了对魏梦舒(程序员小灰)所著的《漫画算法-小灰的算法之旅》一书中个人比较感兴趣的算法的C++实现。
乔碧萝乔斯达
这个作者很懒,什么都没留下…
展开
-
堆排序(C++的实现)
#include<iostream>using namespace std;//堆排序算法的步骤://1、把无序数组构建成二叉堆。需要从小到大排序,则构建成最大堆;否则,构建成最小堆。//2、循环删除堆顶元素,替换到二叉堆的末尾,调整堆产生新的堆顶。 //"下沉"调整void downAdjust(int array[],int parentIndex,int leng...原创 2020-03-27 19:01:07 · 272 阅读 · 0 评论 -
快速排序的两种思路(C++实现)
双边循环法#include<iostream>using namespace std;int partition(int array[],int startIndex,int endIndex);void quickSort(int array[],int startIndex,int endIndex){ //递归终止条件,startIndex>=endInde...原创 2020-03-27 13:47:02 · 350 阅读 · 0 评论 -
鸡尾酒排序(C++实现)
#include<iostream>using namespace std;void cocktailSort(int *array,int length){ //大循环控制所有排序回合 for(int i=0;i<length/2;i++){ //有序标记。每一轮的初始值都是true bool isSorted=true; //奇数轮,从左向右比较和交...原创 2020-03-26 16:22:02 · 475 阅读 · 0 评论 -
冒泡排序及其优化(C++实现)
#include<iostream>#include<vector>using namespace std;//冒泡排序的特点:每一轮冒泡过后,在过去一轮遍历中访问过的元素中的最大元素//一定会到达它最终应当处在的位置。 //基础版本的冒泡排序:双循环。外层循环控制冒泡次数,内层循环实现每一轮的//冒泡处理:先进行元素比较,再进行元素交换。 void b...原创 2020-03-26 15:24:56 · 1049 阅读 · 0 评论 -
二叉堆的创建以及新结点的插入(C++实现)
前言本文中的代码实现的是最小堆,最大堆的原理与此相似,故省略;另外,由于二叉堆插入结点与删除结点的操作相反,所以本文中也只实现插入结点的操作,删除结点的操作的实现略去。阅读文中代码所需的预备知识二叉堆是一个完全二叉树,但是它的存储方式并不是链式存储,而是顺序存储,即二叉树的所有结点都存储在数组中。 若父结点在数组中的下标是parent,则其左孩子的下标是2*parent+1,右孩子的...原创 2020-03-25 17:45:31 · 263 阅读 · 0 评论 -
二叉树的建立及遍历(C++实现)
包含了二叉树的递归建立、前中后序遍历的递归和非递归实现以及层序遍历的非递归实现。#include<iostream>#include<queue>#include<stack>using namespace std;typedef struct TreeNode{ char data; TreeNode *lchild,*rchild;...原创 2020-03-25 02:47:45 · 460 阅读 · 0 评论