Java八大排序
Java八大排序
爱吃番茄的鱼渔
这个作者很懒,什么都没留下…
展开
-
Java八大排序——归并排序
归并排序是一种基于分治思想的排序算法,它将待排序的序列分成若干个子序列,每个子序列都是有序的,然后再将这些有序的子序列合并成一个有序的序列。归并排序的时间复杂度为O(nlogn),是一种稳定的排序算法。除了排序外,归并算法还可以用于求逆序对等问题。1.定义左指针left,右指针right和中间指针mid=(left+ringht)/2 进行拆分,直到拆分成一个一个停止。拆分:在中间位置分成左右两部分,继续拆分,直到拆分成一个一个停止。先拆分后合并,在合并的过程中借助临时空间进行排序。原创 2023-10-30 20:06:05 · 185 阅读 · 0 评论 -
Java八大排序——快速排序
快速排序是一种常用的排序算法,它的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,然后再按此方法对这两部分记录分别进行快速排序,以达到整个序列有序的目的。其中,引用中的代码实现了快速排序的主要逻辑,通过递归实现了对数组的分区和排序。7.以基准数为起始点,分成左右两部分,重复上述所有步骤,直到数据都被拆分开为止。2.定义指针j 从后往前移动,查找第一个比基准数小的数值,停止。3.定义指针i 从前往后移动,查找第一个比基准数大的数值,停止。原创 2023-10-30 22:23:46 · 785 阅读 · 0 评论 -
Java八大排序——堆排序(附Java代码)
在实际的代码操作中,不需要构建完全二叉树,直接在数组中找到父亲节点和左右孩子节点,arr[i]父亲节点为arr[(i-1)/2],arr[i]的左孩子arr[2i+1],arr[i]的右孩子arr[2i+2]。5.如果子节点大于父亲节点,则父子节点进行交换,parent指向child,child指向其左孩子,重复3-5,直到父节点的值大于子节点,或者没有孩子节点。3.判断parent有没有右孩子,如果有右孩子,左右孩子进行比较,child指向左右孩子当中的最大值。大顶堆的根节点是堆中的最大值。原创 2023-10-24 12:08:53 · 81 阅读 · 0 评论 -
Java八大排序——希尔排序
希尔排序的基本思想是将待排序的数组元素按照一定的间隔分成若干个子序列,然后对各个子序列进行插入排序,使整个数组变得基本有序。接着缩小间隔,再次进行排序,直到间隔为1时,完成排序。希尔排序的优点是可以在大规模数据下进行排序,缺点是增量的选择比较困难。3.直到无法分组,所以数组变成一组,(步长为1),插入排序,结束。2.按照数组长度的一半的一半为间隔进行分组,在组内进行插入排序。第一步 :数组长度为六,第一轮分组步长为3,在组内进行插入排序。1.按照数组长度的一半为间隔进行分组,在组内进行插入排序。原创 2023-10-22 22:45:32 · 42 阅读 · 0 评论 -
Java八大排序——基数排序
基数排序的时间复杂度为O(d(n+r)),其中d是位数,n是元素个数,r是基数。但是,基数排序的缺点是需要额外的空间来存储桶或计数器,而且对于数据范围较大的排序场景,其时间复杂度会变得很高。1.定义0-9十个桶,按照个位,十位,百位……3. 当向桶里方数据时,需要判断桶里有没有数据,就需要记录工具,所以可以用一个数组来记录十个桶。2.可以使用二维数组来定义桶,一个有十个桶,每个桶可以存放数组的长度个数据。5.将数据放入桶中,遍历桶记录和桶数据并取出,然后再清除桶记录,直到有序为止。原创 2023-10-27 23:03:47 · 40 阅读 · 0 评论 -
Java八大排序——插入排序
插入排序是一种简单而高效的排序算法,其基本思想是将一个待排序的数组分为已排序和未排序两部分,每次从未排序部分中取出一个元素,插入到已排序部分的合适位置,直到所有元素都被插入到已排序部分为止。插入排序的时间复杂度为O(n^2),但是在实际应用中,插入排序的效率比冒泡排序和选择排序要高,尤其是对于部分有序的数组,插入排序的效率更是非常高。原创 2023-10-21 23:02:11 · 152 阅读 · 0 评论 -
Java八大排序——冒泡排序(附Java代码)
冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。第二趟排序:在剩下的三个元素中,前后两两比较,前面的数大于后面的数则两个数交换位置。第三趟排序:比较剩下的两个元素,前面的数大于后面的数则两个数交换位置。第一趟排序:前后两两比较,前面的数大于后面的数则两个数交换位置。排序后:{1,5,7,3}排序后:{1,3,7,5}排序后:{1,3,5,7}数组{5,1,7,3}原创 2023-10-21 22:48:31 · 2058 阅读 · 0 评论 -
Java八大排序——选择排序(附Java代码)
选择排序是一种简单直观的排序算法,其基本思想是:首先在未排序的数列中找到最小(大)元素,然后将其存放到数列的起始位置;接着,再从剩余未排序的元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。1.选择排序一共有数组长度-1次排序。2.每一次排序都相当于一次循环,循环思想如下:1.假定当前的数是最小数2.和后面的数依次进行比较,如果有比它还小的数则进行交换并获取下标。原创 2023-10-16 17:49:37 · 936 阅读 · 1 评论