- 博客(12)
- 收藏
- 关注
原创 堆排序(JAVA)
堆排序就是利用堆的特性来进行排序的一种算法,在学习堆排序之前需要先了解什么是堆,以及什么是大根堆、小根堆。堆:堆就是一颗完全二叉树。大根堆:堆中的每一个节点都大于等于它的孩子节点。小根堆:堆中的每一个节点都小于等于它的孩子节点。
2023-02-27 18:46:36
376
原创 快速排序(JAVA)
对于一个待排数组,将数组的最后一个数作为num,遍历除num之外的数组中的其他元素,小于num的放在数组左边,等于num的放中间,大于num的放右边,然后把num与大于区域的第一个数进行交换,此时num在数组中的位置就找到了,然后分别对小于区域和大于区域的数重复上述操作,直到所有的数都排好。
2023-02-24 19:18:34
115
原创 荷兰国旗问题2(JAVA)
定义两个指针,一个表示左边区域边界,一个表示右边区域边界,遍历数组,若i位置的数小于num,就将这个数与左边界的下一个数交换,左边界加1,i加1,如果大于num,就将这个数与右边界的前一个数交换,右边界减1,i不变(因为此时从右边交换过来的数成为新的i,继续判断)。给定一个数组arr和一个数num,把数组中小于num的数放在数组的左边,等于num的数放在中间,大于num的数放在右边。
2023-02-23 21:22:04
235
2
原创 荷兰国旗问题1(JAVA)
定义一个指针作为左边区域的边界,从头开始遍历数组,符合小于等于num的条件,边界就加1,不符合就继续向下访问,遇到符合小于等于num的条件的数,就与边界的下一个数交换位置,边界加1。给定一个数组arr和一个数num,把数组中小于等于num的数放在数组的左边,大于num的数放在数组的右边。
2023-02-23 21:10:59
210
原创 二分法求无序数组(相邻两个数不相等)中的一个局部最小值(JAVA)
先判断数组两端的数是否是局部最小,如果不是,对数组进行二分,再分别判断两端是否是局部最小,重复此过程,直到找到。
2023-02-23 20:33:42
175
原创 二分法在有序数组中寻找最小的大于等于某个数的元素(JAVA)
先判断数组是否为空,当数组不为空时,对数组进行二分,然后判断目标值位于二分之后的哪一部分,对该部分继续二分,重复此过程,直到剩下最后两个元素,判断哪一个才是符合要求的最小值,如果两个都不是,则说明数组中没有符合要求的元素。
2023-02-23 20:16:19
452
原创 二分法在有序数组中寻找一个数是否存在(JAVA)
先判断数组是否为空,当数组不为空时,先判断数组的首末位置是否是要找的数,如果不是,则不断地进行二分,直到找到目标数字或者数组中不含目标数字。
2023-02-23 19:56:40
357
原创 冒泡排序(JAVA)
对于一个待排数组,先将0位置的数据和1位置的数据进行比较,大的放在1位置,再将1位置的数据与2位置的数据进行比较,大的放在2位置,以此类推,遍历一次数组之后,最大的数据就放到了最末尾的位置,再对剩余的数组重复上述过程,直到整个数组排好。
2023-02-23 19:14:06
61
原创 选择排序(JAVA)
对于一个待排序的数组,先遍历一遍数组,选出最小(最大)的元素放在第一位,继续遍历剩余的数组,选出此时最小(最大)的元素,重复这个过程,直到整个数组排好。
2023-02-23 18:56:12
328
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人