![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序方式
多种排序方式的思想以及其对比
舒ing
这个作者很懒,什么都没留下…
展开
-
多种排序方式的对比
名称数据对象稳定性平均时间复杂度最坏时间复杂度额外空间复杂度描述冒泡排序数组稳定O(n^2)无O(1)(无序区,有序区)从无序区透过交换找出最大元素放到有序区前端选择排序数组、链表数组不稳定、链表稳定O(n^2)无O(1)(无序区,有序区)在无序区里找一个最小的元素跟在有序区的后面。对于数组,比较的多,换的少插入排序数组、链表稳定O(n^2)无O(1)(无序区,有序区)把无序区里第一个元素插入到有序区的合适的位置。对于数组,比较的...原创 2021-09-04 13:57:11 · 96 阅读 · 0 评论 -
Java实现希尔排序
文章目录1、算法思想2、图解3、示例代码1、算法思想希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。基本思想:先将真个待排序的记录序列分割成为若干子序列分别进行直接插入排序,待整个序列中的记录“基本有序”时,再对全体记录进行一次直接插入排序。(1)选择一个增量序列,t1,t2,……,tk,其中ti>tj,tk=1;(2)按增量序列个数k,对序列进行k趟排序;(3)每趟排序,根据相应的增量ti,将待排序列分割成若干长度为m的子序列,分别对各子表进行直接插入排序。仅增量因原创 2021-07-30 08:59:09 · 120 阅读 · 0 评论 -
Java实现直接插入排序
文章目录1、算法思想2、实例代码java实现冒泡排序Java实现希尔排序1、算法思想(1)将待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。(2)从头到尾一次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面)。2、实例代码public class InsertSort { // 插入排序 public static void main(String[] ar原创 2021-07-30 10:16:02 · 53 阅读 · 0 评论 -
java实现冒泡排序
文章目录1、算法思想2、代码实现1、算法思想冒泡排序是一种交换排序。 (1)比较相邻的元素。如果第一个比第二个大,就交换他们两个。 (2)对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这部做完后,最后的元素回会是最大的数。 (3)针对所有的元素重复以上的步骤,除了最后一个。 (4)持续每次对越来越少的元素重复上面的步骤,知道没有任何一对数字需要比较。2、代码实现public class BubbleSort { // 冒泡排序 public stat原创 2021-07-28 20:20:46 · 79 阅读 · 0 评论 -
Java实现选择排序
文章目录1、算法思想2、实例代码Java实现直接插入排序Java实现希尔排序java实现冒泡排序Java实现快速排序1、算法思想(1)首先在未排序序列中找到最小(最大)元素,存放在排序序列的起始位置;(2)再从剩余未排序元素中继续寻找最小(最大)元素,然后放在已排序序列的末尾。(3)再重复第二部,直到所有元素均排序完毕。2、实例代码public class SelectionSort { // 选择排序 public static void main(String[] a原创 2021-07-30 21:38:56 · 46 阅读 · 0 评论 -
Java实现归并排序
文章目录1、算法思想2、示例代码1、算法思想归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法的一个非常典型的应用。归并排序的实现有两种方法:(1)自上而下的递归;(2)自下而上的迭代。算法步骤(1)申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列;(2)设定两个指针,最初位置分别为两个已经排序序列的起始位置;(3)比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置;(4)重复步骤(3)知道某一指针到达序列尾;(5)将另一序列原创 2021-07-30 21:37:04 · 135 阅读 · 0 评论 -
Java实现快速排序
文章目录1、算法思想2、实例代码Java实现直接插入排序Java实现希尔排序java实现冒泡排序1、算法思想(1)从数列中挑选一个元素,成为“基准”;(2)重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准后面(相同的数可以放到任意一边)。在这个分区退出之后,该基准就属于数列的中间位置。这个称为分区操作;(3)递归地把小于基准值元素的子数列和大于基准值元素的子数列排序。2、实例代码public class QuickSort { public stat原创 2021-07-30 21:16:00 · 66 阅读 · 0 评论