
数据结构
Manduner_TJU
If you have a dream,you got to protect it!
展开
-
堆的四种操作+堆排序
1,定义+图解 直接推荐一篇讲解比较好的博客吧:彻底弄懂最大堆的四种操作(图解+程序)(JAVA) 堆排序算法分析: 时间复杂度:平均情况 O(nlogn);最好情况O(nlogn);最坏情况O(nlogn); 空间复杂度:O(1)。 稳定性:不稳定。 2,堆的插入、删除、初始化、堆排序源码 package manduner; import java.util.ArrayList;...原创 2019-04-11 15:19:29 · 744 阅读 · 0 评论 -
排序算法——选择排序(原理+源码)
1,原理 选择排序原理较为简单,也容易理解。具体原理为:从0索引开始,依次和后面元素比较,若小于后面元素,不交换,继续向后比;若大于后面元素,则先进行交换,然后再拿0索引位置的元素继续向后比(仅以从小到大排序说明原理)。第一次完毕后,最小值出现在了0索引处。同上,继续循环比较,最终可以得到一个排序好的数组。 时间复杂度:平均情况 O(n^2);最好情况 O(n^2);最坏情况O(n^2)。 ...原创 2018-03-08 21:07:09 · 802 阅读 · 0 评论 -
排序算法——冒泡排序(原理+源码)
1,原理 相邻元素两两比较,大的往后放(以从小到大排序为例)。第一次完毕后,最大值就出现在了最大索引处。也就是说,冒泡排序每经过一次,至少有一个元素处于最终位置。同理,继续循环,即可得到一个排序好的数组。冒泡排序次数是数组长度-1次。 时间复杂度:平均情况 O(n^2);最好情况O(n);最坏情况 O(n^2)。 空间复杂度(辅助存储):O(1)。 稳定性:稳定。 2,源码 源码一:标准...原创 2018-03-07 15:12:59 · 1176 阅读 · 0 评论 -
查找算法——二分查找(原理+源码)
1,原理 二分查找又称折半查找,只适用于有序数组。二分查找原理很简单,针对有序数组的查找效率也很高。具体原理为,每次拿目标数值(以下用value表示)与数组中间位置的数据(以下用arry[mid]表示,mid表示数组中间位置索引值)进行比较,如果value大于arry[mid],继续将value与大于arry[mid]部分的中间位置的值进行比较;如果value小于arry[mid],继续将val...原创 2018-03-09 20:48:30 · 6027 阅读 · 0 评论 -
排序算法——快速排序(原理+源码)
1,原理(转自MoreWindows大神) 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。 该方法的基本思想是: (1).先从数列中取出一个数作为基准数。 (2).分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。 (3).再对左右区间重复第二步,直...原创 2019-04-15 15:02:10 · 562 阅读 · 0 评论