![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据结构与算法笔记
数据结构与算法笔记
神秘的W同学
这个作者很懒,什么都没留下…
展开
-
Java实现选择排序
/** * 选择排序 * 时间复杂度 O(n²) * */ public static void SelectionSort(int[] nums) { //最小元素的下标 for (int i = 0; i < nums.length; i++) { int min = i; for (int j = i + 1; j < nums.length; j++) {原创 2022-02-21 22:31:27 · 178 阅读 · 0 评论 -
Java实现冒泡排序
1、基础版本/** * 冒泡排序 * 时间复杂度 O(n²) * */ public static void BubbleSort(int[] nums) { for (int i = 0; i < nums.length; i++) { for (int j = nums.length - 1; j > i; j--) { count++;原创 2022-02-21 22:30:37 · 227 阅读 · 0 评论 -
Java实现堆排序
/** * 堆排序 * * @param nums */ public static void heapSort(int[] nums){ for(int i=nums.length/2-1;i>=0;i--){ headAdjust(nums,i,nums.length-1); } for(int i=nums.length-1;i>0;i--){原创 2022-02-21 22:28:00 · 280 阅读 · 0 评论 -
Java实现快速排序
/** * 快速排序 * * @param nums * @param left * @param right */ public static void quickSort(int[] nums,int left, int right){ if(left>=right){ return; } int l = left; int r = right原创 2022-02-17 21:37:15 · 345 阅读 · 0 评论 -
A*算法解决15数码问题详细解析(附完整代码)
一、15数码问题15数码问题:一个4*4的16宫格棋盘上,摆放有15个将牌,每一个都刻有1-15中的某一个数码。棋盘中留有一个空格,允许其周围的某一个将牌向空格移动,这样通过移动将牌就可以不断改变将牌的布局。所要求解的问题:是给定一种初始布局(初始状态)和一个目标布局(目标状态),问如何移动数码实现从初始状态到目标状态的转变。二、A*算法2.1 什么是A*算法?A*算法,A*(A-Star)算法是一种静态路网中求解最短路径最有效的直接搜索方法,也是解决许多搜索问题的有效算法。A*算法是一种启发式搜索原创 2021-11-29 18:19:42 · 5197 阅读 · 0 评论 -
递归计算二叉树结点数目
一、要求示例:编写一个函数,一棵二叉树为输入,返回二叉树的结点数目。二、代码 int getNodeNum(BinaryTree* tree){ BinaryTreeNode* pointer = tree->root; //根结点数 int num=0; //左子数结点数 int numL=0; //右子树结点数 int numR=0; if (tree-&g原创 2021-04-14 18:29:54 · 4223 阅读 · 0 评论 -
读取字符串构造二叉链表(C++)
一、要求输入一个字符串,字符串中,二叉树中每个节点用一个字符表示(a~z或A-Z),空节点用#表示。构造一个二叉链表。如:AB#D##CE#F###二、代码1.结点类定义class BinaryTreeNode{ friend class BinaryTree;private: char info; BinaryTreeNode* lChild,*rChild;};2.二叉链表类定义class BinaryTree {private: Binary原创 2021-04-07 18:36:59 · 527 阅读 · 1 评论 -
C++循环队列解决约瑟夫问题
一、约瑟夫问题题目:设有n个人围坐在一个圆桌周围,现从第s个人开始报数,数到第m的人出列,然后从出列的下一个人重新开始报数,数到m的人又出列,如此重复,直到所有的人全部出列为止。Josephus问题是:对于任意给定的n,s,m,求出按出列次序得到的n个人员的序列。二、题解1.队列类定义:class Queue{private: int mSize; int front; int rear; int* queue; public: Queue(in原创 2021-04-07 15:39:04 · 2071 阅读 · 1 评论 -
在BST(二叉搜索树)中查找介于给定范围之内的值
一、题目要求要求:编写一个递归函数printRange(),传入一个BST、一个较小的值和一个较大的值,按照顺序打印出介于两个值之间的所有结点。函数printRange()应尽可能少地访问BST的结点。二、题解代码如下:void PrintRange(BinarySearchTree* bst,int minData,int maxData) { //中序 保证按大小顺序打印范围内的数 while (bst->root) { Binary原创 2021-04-07 15:12:35 · 1126 阅读 · 0 评论