![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基本算法
qq_23617681
这个作者很懒,什么都没留下…
展开
-
常用算法之堆排原理介绍与java实践
堆排是一种常见的排序算法,空间复杂度为o(1),时间复杂度是o(nlogn)。原理介绍:思想类似与冒泡排序、选择排序。逐步求取每个子树的最大值,直至最大值到达最顶层索引值为0的堆顶。堆排是利用堆进行排序的方法。可分为大堆和小堆,即数值越大,所处堆的层级越靠上。其中,堆在计算机中是一种数据结构,再细致点讲,是一个完全二叉树。如果堆的底层用数组存储数据的话,则存在如下性质:1、原创 2016-04-09 21:04:53 · 398 阅读 · 0 评论 -
常见算法之归并排序java实践
归并排序是一种典型的分治算法(divide and conquer)。归并算法相对快速排序、堆排而言,是稳定的。即原先相等的两个数,进行归并排序后,所处位置不会变化。基本过程为:1、将待排序数组平分两组,并对两子数组进行排序。2、对排序好的子数组进行合并。3、循环进行1、2,直到子数组只含有一个数。注意事项:1、合并时,另一个未循环完的子数组,剩余元素合并到新数原创 2016-04-09 22:40:04 · 259 阅读 · 0 评论 -
常见算法之希尔排序java实践
希尔排序又称shell排序,它是插入排序的一种改进。在插入排序中,若要插入的元素很小,则需要移动数组多大多数元素,才能将元素插入正确位置。希尔排序把数组分成几个小组,组内元素的增量是n/2,这样在组内进行插入排序时,就能大跨度地移动元素,大大减少了插入排序的移动次数。(算法优越之处)希尔排序不稳定。时间复杂度o(nlogn).空间复杂度o(1)基本思想:1、将待原创 2016-04-10 10:26:26 · 370 阅读 · 0 评论