算法
^^WyZ^^
这个作者很懒,什么都没留下…
展开
-
完全二叉树应用之堆排序算法
完全二叉树应用之堆排序算法原理完全二叉树是严格按照从上到下,从左向右排列的二叉树步骤:1、根据给定的关键词创建一个堆2、输出堆顶元素3、调整余下元素,使其成为一个新堆(从 size/2 开始调整 即倒数第二次最后一个根节点开始调整)4、重复(2)(3),直到输出n个元素,得到一个有序数列/* * @Description: 最小堆排序算法 * @Version: 0.1 * @Autor: Wyz * @Date: 2021-09-09 11:29:53 */#include原创 2021-09-09 20:22:11 · 373 阅读 · 0 评论 -
完全二叉树应用之 堆排序算法
完全二叉树应用之 堆排序算法原理完全二叉树:严格按照从上到下,从左到右的排序二叉树步骤:1、根据初始关键字创建堆2、输出堆顶最大(大根堆)或最小元素(小根堆)3、调整剩下的元素,使其成为一个新堆 (从 size /2 处开始,即倒数第二层的最后一个根节点开始 headpify)4、重复(2)(3)直到输出n个元素得到一个有序序列/* * @Description: 最小堆排序算法 * @Version: 0.1 * @Autor: Wyz * @Date: 2021-09-09 1原创 2021-09-09 20:13:14 · 317 阅读 · 0 评论 -
二叉树的遍历算法之 非递归算法
二叉树的遍历算法之 非递归算法原理通过模拟栈来实现#include <iostream>#include <stack>#include <utility>struct BtreeNode{ int data; BtreeNode* left; BtreeNode* right;};class Solution{public: 前序 void inorder(BtreeNode* root){ //原创 2021-09-07 20:22:28 · 86 阅读 · 0 评论 -
二叉树的遍历算法之 层次遍历算法
二叉树树的遍历算法之(层次遍历算法) – (广度优先算法)原理利用一个队列来实现,一层从左向右的节点访问#include <iostream>#include <queue>struct BtreeNode{ int data; BtreeNode* left; BtreeNode* right;};class Solution{public: void levelorder(BtreeNode* root){ s原创 2021-09-07 20:19:35 · 290 阅读 · 0 评论 -
二叉树的遍历算法之 递归算法
树的遍历算法之(递归算法)递归算法分为三种(前序,中序,后序)根据根节点的访问顺序来定的。前序访问顺序 ( 根 – 左节点 – 右节点 )中序访问顺序 ( 左节点 – 根 – 右节点 )后序访问顺序 ( 左节点 – 右节点 – 根 )#include <iostream>struct BtreeNode{ int data; BtreeNode* left; BtreeNode* right;};class Solution{public:原创 2021-09-07 20:10:51 · 680 阅读 · 0 评论 -
算法之冒泡排序(bubblesort)
算法之冒泡排序(bubblesort)原理每一趟进行两两进行比较,每一趟选出最大的数据,这样下一趟就可以少比较一个数,需要的趟数(数组长度 - 1)时间复杂度O(N2)#include <vector>#include <iostream>using namespace std;class Solution{public: const vector<int>& bubblesort(vector<int>& nums)原创 2021-09-05 16:12:06 · 138 阅读 · 0 评论 -
算法之归并排序(mergesort)
算法之归并排序(mergesort)情况一、 两个有序(升序)的数组归并为一个有序数组时间复杂度O(N)原理通过指针法:先比较两数组的初始位置的数据大小,比较小的数据放入一个最终的数组中,并且此数组向后移位,较小数据的数组也向后移动。#include <vector>#include <iostream>#include <iterator>using namespace std;class Solution{public: const v原创 2021-09-04 18:50:27 · 228 阅读 · 0 评论 -
算法之选择排序(selectsort)
算法之选择排序(selectsort)原理时间复杂度O(N2)把一个无序数组看做成(一部分有序,一部分无序的部分)中选择一个最大或最小的数据,将其与无序部分的首元素交换位置#include <vector>#include <iostream>using namespace std;class Solution{public: /* 找无序区间的最小位置下标 [index, n]*/ const int find_min_index(vector<原创 2021-09-04 19:00:26 · 150 阅读 · 0 评论 -
算法之插入排序(insertsort)
算法之插入排序(insertsort)原理将无序的数组看作是一部分有序,一部分无序的,将无序数组按顺序遍历,插入到有序数列的合适位置中直接插入步骤①在有序数列[ 0, i-1 ] 中找到合适的位置插入[ i ],假如是位置k②将[ k , i-1 ] 之间的数据全部向后移一位③插入到位置k#include <vector>#include <iostream>using namespace std;class Solution{public: const原创 2021-09-02 17:21:45 · 152 阅读 · 0 评论 -
排序算法之快速排序
排序算法之快速排序时间复制度 O(NlogN)在c和c++库中 都有类似的封装 c – qsort() ;c++ – sort()原理快排的核心思想:将小于参考值的数放在其左边,大于的数放在右边主要思想是利用递归思想1、先选则一个参考值(一般选择为 数组第一个值)2、必须从最右边开始找小于参考值的数: 下标 j(why? – 见彩蛋)3、从最右边开始找大于参考值的数:下标 i4、swap(); 交换两个数的位置 (如果 i == j ,则交换参考值与下标是i的数)5,递归调用,原创 2021-08-27 16:19:02 · 97 阅读 · 0 评论