数据结构算法
NoBiz
这个作者很懒,什么都没留下…
展开
-
五大排序算法代码模版
根据排序时数据所占用存储器不同,排序可分为内部排序:整个排序过程在内存进行外部排序:需要借助外存按逐步扩大记录有序序列长度的方法,可将内部排序分为五大类插入类:将无序子序列中的一个或几个记录插入到有序序列中选择类:从记录的无序子序列中选择关键字最小或最大的记录,并将其加入到有序子序列中交换类:通过交换无序子序列中的记录从而得到其中关键字最小或最大的记录,并将其加入到有序子序列中归并类:通过归并两个或两个以上的记录有序子序列分配类:唯一不需要进行关键字之间比较的一类排序算法,它主要利用分原创 2021-08-14 13:18:02 · 227 阅读 · 0 评论 -
回溯法与N皇后问题JAVA实现
提出问题八皇后问题:在8*8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。如何解决这个问题?一种常用且有效的方法是回溯法,是用树形结构描述问题的求解过程。什么是回溯法回溯法是一类非常重要的算法设计方法,有“通用解题法”之称。回溯法(探索与回溯法):一种选优搜索法,又称试探法。利用试探性的方法,在包含问题所有解的解空间树中,将可能的...原创 2018-04-17 13:50:51 · 14602 阅读 · 4 评论 -
二叉排序树(BST查找、插入、删除、遍历)——基于树的查找(一)
二叉排序树二叉排序树(Binary Search Tree,BST):又称二叉查找树,是一种高效的数据结构。定义二叉排序树或者是一棵空树,或者是具有如下特性的二叉树:若左子树不空,则左子树上所有结点的值均小于或等于根结点的值;若右子树不空,则右子树上所有结点的值均大于或等于根结点的值;左、右子树也分别为二叉排序树如下便是一棵二叉排序树 根据定义,再根据二叉树中...原创 2018-04-21 23:53:38 · 14466 阅读 · 2 评论 -
平衡二叉树(AVL)插入、删除详解——基于树的查找(二)
由上节内容二叉排序树可知: 二叉排序树在最好的情况下只需O(logn)的时间代价; 但在最差情况下会蜕化为线性查找的时间复杂度O(n); 造成原因:这种情况主要是由于二叉排序树中结点分布不均衡导致,可能是二叉排序树在建立时由于输入序列造成的,也可能是由于在树中不断插入结点而造成的。 解决想法:如果能够找到一种方法,使得二叉排序树不受输入序列或插入结点等的影响,...原创 2018-04-22 11:57:27 · 1789 阅读 · 0 评论 -
红黑树原理及插入、删除——基于树的查找(三)
红黑树红黑树(red-black tree)是一种自平衡二叉查找树。 一颗红黑树是满足下面性质的染色二叉排序树:结点是红色或黑色;根结点是黑色;每个叶节点(NIL节点,空节点)是黑色的;每个红色结点的左右子结点都是黑色;从任一结点到其每个叶子的所有路径都包含相同数目的黑色结点。 可以看出,在一棵红黑树中,最短的道路是所有的结点都是黑色的,最长的道路必是红黑相间。...原创 2018-04-22 23:31:14 · 3219 阅读 · 6 评论