2021年8月26日
摘要: 摘要 桶排序和基数排序类似,相当于基数排序的另外一种逻辑。它是将取值范围当做创建桶的数量,桶的长度就是序列的大小。通过处理比较元素的数值,把元素放在桶的特定位置,然后遍历桶,就可以得到有序的序列。 逻辑 创建一定数量的桶(数组或者链表)。制定规则将序列中的元素均匀地分布在不同的桶中。然后对每个桶内排 阅读全文
posted @ 2021-08-26 21:21 我为双鱼狂 阅读(411) 评论(0) 推荐(1)
  2021年8月24日
摘要: 摘要 基数排序是进行整数序列的排序,它是将整数从个位开始,直到最大数的最后一位截止,每一个进位(比如个位、十位、百位)的数进行排序比较。 每个进位做的排序比较是用计数排序的方式处理,所以基数排序离不开计数排序。 逻辑 对整数依次从个位数、十位数...进行排序。基数排序非常适合用于整数排序 对每一轮的 阅读全文
posted @ 2021-08-24 21:38 我为双鱼狂 阅读(282) 评论(0) 推荐(0)
  2021年8月19日
摘要: 摘要 计数排序本质就是统计不同元素出现的次数,然后将元素依次从小到大放置,每个元素看统计的次数,就紧挨着放置几个同样的元素。 看似简单的处理,在算法中,会依据统计的元素次数推算出每个元素的索引位置,这就是算法的魅力。 逻辑 统计每个整数在序列中出现的次数,进而推导出每个整数在有序序列中的索引。 这是 阅读全文
posted @ 2021-08-19 21:00 我为双鱼狂 阅读(208) 评论(0) 推荐(0)
  2021年8月17日
摘要: 摘要 看希尔排序需要先想象出一个二维的矩阵,在这个矩阵中,有多少列数据全看步长(一定的规则得到)。处理完之后,就再接着用另一个步长组成矩阵处理。直到步长全部使用完。 这里的巧妙之处就是没有把序列先处理成二维数组,而是通过与步长配合,依旧在一维的序列中处理。 逻辑 希尔排序相当于把序列当作一个矩阵,逐 阅读全文
posted @ 2021-08-17 21:07 我为双鱼狂 阅读(263) 评论(0) 推荐(0)
  2021年8月12日
摘要: 摘要 堆排序需要用到一种数据结构,大顶堆。大顶堆是一种二叉树结构,本质是父节点的数大于它的左右子节点的数,左右子节点的大小顺序不限制,也就是根节点是最大的值。 这里就是不断的将大顶堆的根节点的元素和尾部元素交换,交换到大顶堆没有可以被交换的元素为止。后面再说大顶堆的逻辑。 逻辑 首先将序列通过大顶堆 阅读全文
posted @ 2021-08-12 20:46 我为双鱼狂 阅读(244) 评论(0) 推荐(0)
  2021年8月10日
摘要: 摘要 快速排序和归并排序有一些相似的地方,就是在中间位置拆分成两部分,分别做处理。 这里也是用到递归思想,但是与归并排序的先拆分再排序处理的思想不同,快速排序是先处理排序,然后再拆分。 本质 每一次确定一个轴点元素,然后和序列中的其他元素比较,放在元素的左右任何位置位置,完成之后,这个轴点元素的位置 阅读全文
posted @ 2021-08-10 20:07 我为双鱼狂 阅读(164) 评论(0) 推荐(1)
  2021年8月6日
摘要: 摘要 归并排序就是将序列不断向下拆分成最小的序列(只有两个元素),然后从这个地方开始排序,然后向上合并成新的序列和排序,直到合并为一个序列(这时,这个序列就是有序的) 代码实现上用了递归的思路处理,归并排序在时间复杂度上比前3种有优势,具体可以用到什么样的场景,暂时没有想到,就先学习下逻辑,增长见识 阅读全文
posted @ 2021-08-06 20:31 我为双鱼狂 阅读(126) 评论(0) 推荐(0)
  2021年8月3日
摘要: 摘要 插入排序是先假定一部分序列是有序的,这部分序列也可以是 0 个元素。另外需要排序的元素就一个个的插入到这个有序的序列中。因为要插入的序列本来就是有序的,所以只要找到合适的插入位置,那么就可以结束这轮循环。 代码中处理的就是界定遍历边界,和减少遍历次数,提高效率。这里的有序序列是元素从左开始,由 阅读全文
posted @ 2021-08-03 20:55 我为双鱼狂 阅读(145) 评论(0) 推荐(0)
  2021年7月29日
摘要: 摘要 选择排序的逻辑是先遍历比较出序列中最大的,然后把最大的放在最后位置。 遵循这个逻辑,用代码实现时,做到1.减少比较次数之外,这里引入一个新的指标 - 稳定性,2.保证排序过程中的稳定性也是一个优化处理 代码逻辑 从头遍历序列,分别和尾部元素比较,记录最大的元素坐标 遍历完成后,和尾部位置交换位 阅读全文
posted @ 2021-07-29 21:24 我为双鱼狂 阅读(280) 评论(0) 推荐(0)
  2021年7月27日
摘要: 摘要 冒泡排序相对来说,多少都有些了解,就是多循环几轮,每一轮找出最大值放在尾部,直到数组中的元素有序为止。 在这基础上,探讨一下有没有高阶的方法,比如1.提前结束循环,或者2.循环中提前终止,进行下一个循环。这个是要探讨的重点 算法这部分用的编辑语言是 JAVA,编译工具是 Eclipse,JAV 阅读全文
posted @ 2021-07-27 21:11 我为双鱼狂 阅读(148) 评论(0) 推荐(0)