自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 堆排序(heapsort)

堆排序的基本思想是:将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。(3)重新调整结构,使其满足堆定义,然后继续交换堆顶元素与当前末尾元素,反复执行调整+交换步骤,直到整个序列有序。(1)将无需序列构建成一个堆,根据升序降序需求选择大顶堆或小顶堆;(2)将堆顶元素与末尾元素交换,将最大元素"沉"到数组末端;

2023-01-01 19:56:12 51 1

原创 java递归

递归函数是一种特殊的函数,它可以调用自身来完成某项任务。它的基本原理是,一个函数在执行时会调用另一个函数,而这个被调用的函数又会调用另一个函数,以此类推,直到某个函数不再调用其他函数为止。递归函数的优点是可以解决复杂的问题,而且代码简洁,易于理解。缺点是递归函数的执行效率比较低。我们以斐波那契数列举例。2. 求斐波那契数列。3. 求二叉树的遍历。5. 求排列组合问题。

2022-12-18 20:29:16 47

原创 双指针学习2

事实上,我们只需要获得nums的中位数并返回。因此,可以使用双指针,left从头部开始遍历,right从尾部开始遍历,如果头尾指针相遇,说明找到了中位数,返回(left+rigth)/2的值。该算法暴力解法为创建一个新的数组nums,然后将nums1与nums2中的值一一放入nuns中并排序,最后在返回nums的中位数。该方法时间复杂度与空间复杂度过于复杂。这个方法可以节省大部分时间,并不需要创建一个新的数组来存储nums1与nums2中的值。

2022-12-09 21:11:29 65

原创 双指针笔记

双指针是在一次for循环中使用两个指针完成需要两个for循环的工作。其主要有两种方法:快慢双指针:从一端开始,设置两个速度不一样的指针进行遍历。 首位双指针:从两头开始,一起遍历。

2022-12-04 20:23:49 62

原创 创建双向链表

双向链表完美的解决了这个问题,使其可以随意向一端进行访问,极大程度的减少了使用时可能会产生的问题。在创建链表时,我们需要初始化两个指针。并且与单向链表一样,我们需要头节点和尾节点。在单向链表中,我们只可以从一端一个一个向另一端访问。

2022-11-19 22:09:55 209

原创 java 快速排序

快速排序是一种先选择一个基准数,基于这个 数来进行排序的算法。在这个算法中,先从后往前找到一个比基准数小的数,然后从前往后找到一个比基准数大的数,交换他们的位置,直到前后相遇,交换基准数与重合下标的值。第一次循环可以将大于基准数的数放在基准数的右边,将小于基准数的数放在基准数的左边。就此,该数组就分为2部分,接着循环调用方法即可将数组一步步排序。

2022-11-08 17:25:50 53 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除