算法
文章平均质量分 51
贝多芬也爱敲代码
哇!好多不了解的,还是要多啃得点 ^0^~
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
红黑树和平衡二叉树的区别
红黑树:每个节点都有一个颜色属性,可以是红色或黑色。在树中没有任何两个相邻的节点是同色的,即父节点和子节点颜色不同。AVL树:每个节点的左子树和右子树的高度最多差1,即平衡因子的绝对值不超过1。红黑树和AVL树各有优势,选择使用哪一种取决于具体的应用场景和性能需求。原创 2024-07-21 14:12:30 · 241 阅读 · 0 评论 -
算法:冒泡排序
原理: 每一次整个无序数组进行相邻的进行比较,较大的向后排,这样这次排序的数组中最后的两个数就是有序的,下次不再进行排布最后这个数,这样待排序的数组就少1。直排到最后待排序的数组数量为小于1。 图片展示 这个图片的比较是从后向前进行比较的,不过也是进行多轮比较。 代码实现 public class BubbleSort { public void arrSort(int[] arr,in...原创 2019-10-02 16:47:47 · 138 阅读 · 0 评论 -
算法:选择排序
原理: 就是在待排序的数组数据值中查找到最小那个值,然后交换位置,直到排到只剩最后一个数。 图片展示 图片中的情况没有标指向,就是每一mix的下标指向未排序的第一数上面,让他跟剩下的数比较。小的话就交换位置,这样这个数就一定比排好的数大,剩下的也依次比这个数值大。 代码实现 public class SelectSort { public void sort(int arr[] ,int ...原创 2019-10-02 17:24:07 · 184 阅读 · 0 评论 -
算法:插入排序
原理: 就是讲待排序数组分为两部分,第一部分看为有序数组(初始时只有一个数),一次处理无序的数组(无序的第一个数为他在有序的部分中找到一个合适的位置插入,前面的数依旧有序,直到无序的数处理完) 图示: 代码实现 public class InsertSort { public void sort(int[] arr,int n){ int i,j,k; f...原创 2019-10-03 16:14:34 · 162 阅读 · 0 评论 -
算法:希尔排序
原理: 希尔排序是希尔在插入排序的基础上的改进。 大概是先将待排数组分为gap个数组,每组中的每个数在数组中的间隔为gap,分在在每组中进行插入排序,然后每次gap=gap/2,直到最后gap=1,还原为一个组的数据,这时候数组里面的值就变为大致有序,最后进行一次插入排序,就得到了有序数组。 图示: 代码实现: public class ShellSort { public void s...原创 2019-10-03 18:44:28 · 193 阅读 · 0 评论 -
算法:快速排序
原理: 就是选一个数作为基准数(一般是左边或者右边第一个数),从右边开始(跟基准数选的方向相反),找到比基准数大的第一个数替换到基准数的位置(这时候基准数已经被记录了,所以不会丢失),同时左标记点+1,从左边开始找到第一个比基准数大的数(这是为了保证左边的数都是比基准数小),将这个数赋值到右标记点的位置,直到i>=j,这时候表示大小都分布在右左两侧,这时候将基准数赋值到左标记点现在的位置,这...原创 2019-10-05 19:16:27 · 132 阅读 · 0 评论 -
算法:堆排序
原理: (首先你需要了解二叉堆的概念,知道先序遍历,什么叫最大树、最小树,父子节点的下标计算,如何实现最大小树)其实就是在你构建好最大树(这里面以最大树为例子),拿到头结点(一定是这个队列里面的最大值),把他放在数组的最后面,他前面的数值一定比这个数大。然后缩小范围,将前面的数重新构建为最大树,再拿出根节点,直到剩最后一个值。这样就变为有序的数组。 图示: 代码实现: public class ...原创 2019-10-05 20:54:04 · 159 阅读 · 0 评论
分享