![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
joexk
点滴记录
展开
-
Java TreeMap的排序
Java TreeMap的排序TreeMap 和 HashMap 用法大致相同,但实际需求中,我们需要把一些数据进行排序;以前在项目中,从数据库查询出来的数据放在Li转载 2015-03-19 12:38:20 · 838 阅读 · 0 评论 -
一个例子搞懂快速排序算法
一、快速排序算法快速排序算法是对冒泡排序的一种改进。快排基本思想是:通过一趟排序将要排序的数据以基准数据分割成独立的两部分,其中一部分的所有数据都比基准数据小,另外一部分的所有数据都比基准数据大,然后再通过递归对这两部分数据分别进行快速排序,实现整个数据变成有序序列。二、实例排序步骤分析样本数据:45 23 68 88 55 12 100 9基准数: 一般取待排序序列的第一个目标: ...原创 2019-01-06 19:03:27 · 4854 阅读 · 0 评论 -
通过数组实现一个栈
栈是一个先进后出的数据结构,所以实现栈就抓住栈的该特性,当然使用数组实现栈,需要考虑扩容问题,如果使用链表来实现的话就没有扩容问题了。一、定义栈的方法接口这里定义了栈的几个主要方法:public interface IStack<E> { /** * 栈元素大小 * @return */ int size(); /** ...原创 2019-02-01 10:04:32 · 692 阅读 · 0 评论 -
实现快速排序算法的另一种思路
一、快速排序算法快速排序的基本思想如下:从数组中取出一个数作为中轴数(pivot)划分数组:将比这个数大的数放到它的右边,小于或等于它的数放到它的左边再对左右区间重复上述步骤,直到各区间只有一个数二、实例排序分析样本数据:{5,8,4,3,2,5,7,9}中轴数pivot: 一般取待排序序列的第一个目标: 交换后, 中轴数左边的数要全部小于中轴数, 其右边的数要全部大于等于中...原创 2019-02-27 23:34:31 · 306 阅读 · 0 评论 -
快速排序算法存在的问题及改进
一、存在的问题当数组长度较小时,不比其他排序算法高效,如插入排序;当数组为有序数组时,或者所选中轴数每次都是最小或最大的元素,造成每次分区都只有一个分区(每次分区后规模都只减1),得到最坏时间复杂度O(n^2)二、改进对于快排存在的问题,对应的改进方法如下:1.当划分到较小的子数组时,通常可以使用插入排序替代快速排序此时可以设定一个快排分区的阈值,当待排数组分区后的长度小于阈值时改...原创 2019-02-28 00:11:37 · 4630 阅读 · 0 评论 -
通过链表实现一个栈
栈是一个先进后出的数据结构,本篇文章使用链表来实现一个栈。一、定义栈的方法接口这里定义了栈的几个主要方法:public interface IStack<E> { /** * 栈元素大小 * @return */ int size(); /** * 是否为空 * @return */ b...原创 2019-02-24 22:17:34 · 1238 阅读 · 0 评论