数据结构
_jioji_
这个作者很懒,什么都没留下…
展开
-
堆排序(JAVA)
堆排序就是利用堆的特性来进行排序的一种算法,在学习堆排序之前需要先了解什么是堆,以及什么是大根堆、小根堆。堆:堆就是一颗完全二叉树。大根堆:堆中的每一个节点都大于等于它的孩子节点。小根堆:堆中的每一个节点都小于等于它的孩子节点。原创 2023-02-27 18:46:36 · 333 阅读 · 0 评论 -
快速排序(JAVA)
对于一个待排数组,将数组的最后一个数作为num,遍历除num之外的数组中的其他元素,小于num的放在数组左边,等于num的放中间,大于num的放右边,然后把num与大于区域的第一个数进行交换,此时num在数组中的位置就找到了,然后分别对小于区域和大于区域的数重复上述操作,直到所有的数都排好。原创 2023-02-24 19:18:34 · 101 阅读 · 0 评论 -
荷兰国旗问题2(JAVA)
定义两个指针,一个表示左边区域边界,一个表示右边区域边界,遍历数组,若i位置的数小于num,就将这个数与左边界的下一个数交换,左边界加1,i加1,如果大于num,就将这个数与右边界的前一个数交换,右边界减1,i不变(因为此时从右边交换过来的数成为新的i,继续判断)。给定一个数组arr和一个数num,把数组中小于num的数放在数组的左边,等于num的数放在中间,大于num的数放在右边。原创 2023-02-23 21:22:04 · 207 阅读 · 2 评论 -
荷兰国旗问题1(JAVA)
定义一个指针作为左边区域的边界,从头开始遍历数组,符合小于等于num的条件,边界就加1,不符合就继续向下访问,遇到符合小于等于num的条件的数,就与边界的下一个数交换位置,边界加1。给定一个数组arr和一个数num,把数组中小于等于num的数放在数组的左边,大于num的数放在数组的右边。原创 2023-02-23 21:10:59 · 168 阅读 · 0 评论 -
归并排序(JAVA)
对待排数组进行简单递归,左边排好序,右边排好序,使其整体有序。原创 2023-02-23 20:56:47 · 39 阅读 · 0 评论 -
二分法寻找无序数组中的最大值(JAVA)
递归进行二分,分别找出两边的最大值。原创 2023-02-23 20:44:23 · 458 阅读 · 0 评论 -
二分法求无序数组(相邻两个数不相等)中的一个局部最小值(JAVA)
先判断数组两端的数是否是局部最小,如果不是,对数组进行二分,再分别判断两端是否是局部最小,重复此过程,直到找到。原创 2023-02-23 20:33:42 · 146 阅读 · 0 评论 -
二分法在有序数组中寻找最小的大于等于某个数的元素(JAVA)
先判断数组是否为空,当数组不为空时,对数组进行二分,然后判断目标值位于二分之后的哪一部分,对该部分继续二分,重复此过程,直到剩下最后两个元素,判断哪一个才是符合要求的最小值,如果两个都不是,则说明数组中没有符合要求的元素。原创 2023-02-23 20:16:19 · 381 阅读 · 0 评论 -
二分法在有序数组中寻找一个数是否存在(JAVA)
先判断数组是否为空,当数组不为空时,先判断数组的首末位置是否是要找的数,如果不是,则不断地进行二分,直到找到目标数字或者数组中不含目标数字。原创 2023-02-23 19:56:40 · 323 阅读 · 0 评论 -
插入排序(JAVA)
依次访问数组中的每一个元素,将其插入到前面合适的位置(类似于打扑克的时候,一张一张地摸牌,将新摸到的牌插入到合适的位置)原创 2023-02-23 19:39:10 · 37 阅读 · 0 评论 -
冒泡排序(JAVA)
对于一个待排数组,先将0位置的数据和1位置的数据进行比较,大的放在1位置,再将1位置的数据与2位置的数据进行比较,大的放在2位置,以此类推,遍历一次数组之后,最大的数据就放到了最末尾的位置,再对剩余的数组重复上述过程,直到整个数组排好。原创 2023-02-23 19:14:06 · 46 阅读 · 0 评论 -
选择排序(JAVA)
对于一个待排序的数组,先遍历一遍数组,选出最小(最大)的元素放在第一位,继续遍历剩余的数组,选出此时最小(最大)的元素,重复这个过程,直到整个数组排好。原创 2023-02-23 18:56:12 · 309 阅读 · 2 评论