![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
常见七种排序
要努力要变强
这个作者很懒,什么都没留下…
展开
-
七种排序算法性能分析
排序方法最好时间复杂度平局时间复杂度最坏时间复杂度空间复杂度稳定性特点插入排序O(N)O(N^2)O(N^2)O(1)稳定越有序越快希尔排序O(N)O(N^1.3)~ O(N^1.5)O(N^2)O(1)不稳定分组,缩小增量选择排序O(N^2)O(N^2)O(N^2)O(1)不稳定堆排序O(N*log(N))O(N*log(N))O(N*log(N))O(1)不稳定冒泡排序O(N)O(N^2)O(N^...原创 2021-03-11 20:42:13 · 94 阅读 · 0 评论 -
快速排序的优化
1.递归的快速排序优化第一种优化思想:1.首先快速排序对于大量数据比如以万为计量单位,那么快排的时间复杂度和空间复杂度都是相对于其他几个排序都是最好的,那么对于少量数据比如10个,100个,快速排序显然已经不是最好的了;2.那么快速排序每次经过找基准,这样数据就在慢慢趋于有序,这个时候当low和high之间的数据小于一个给定的值的时候,比如100,我们就可以之间调用之间插入排序来进行排序;public static void quick(int[] arr,int low,int high){原创 2021-03-11 20:25:21 · 1675 阅读 · 0 评论 -
归并排序
归并排序如下图:先分割,在合并;//归并排序 public static void mergesort(int[] arr){ mergeSortInternal(arr,0,arr.length-1); } //分割 public static void mergeSortInternal(int[] arr,int low,int high){ if(low >= high){ return;原创 2021-03-11 20:18:42 · 64 阅读 · 0 评论 -
交换排序 (冒泡排序和快速排序)
1.冒泡排序原理:在无序区间,通过相邻数的比较,将最大的数冒泡到无序区间的最后,持续这个过程,直到数组整体有序。稳定性(稳定) 1.一个稳定的排序可以变成不稳定的排序; 2.一个本身就不稳定的是不可能变成稳定的;空间复杂度:O(1)时间复杂度:最好情况O(n);最坏情况O(n^2)//冒泡排序 public static void bubbleSort(int[] arr){ for (int i = 0;i < arr.length-1;i++){//控制冒原创 2021-03-11 20:16:42 · 59 阅读 · 0 评论 -
选择排序 (选择排序和堆排序)
1.选择排序原理:每一次从无序区间选出最大(或最小)的一个元素,存放在无序区间的最后(或最前),直到全部待排序的数据元素排完 。稳定性(不稳定) 1.一个稳定的排序可以变成不稳定的排序; 2.一个本身就不稳定的是不可能变成稳定的;空间复杂度:O(1)时间复杂度:O(O(n^2))public static void selectsort(int[] arr){ for (int i =0;i < arr.length;i++){ for (in原创 2021-03-11 20:12:14 · 118 阅读 · 0 评论 -
插入排序(直接插入排序和希尔排序)
一.基本概念1.概念:排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。平时的上下文中,如果提到排序,通常指的是排升序(非降序)2.稳定性两个相等的数据,如果经过排序后,排序算法能保证其相对位置不发生变化,则我们称该算法是具备稳定性的排序算法。下面用一个简单图给大家说明一下:图中给的数据有俩个3,如果排序之后,黑3还在红3之后,那么这样的排序就是稳定的,否则就是不稳定的。3.Java常见排序二.具体排序代码实现1.直接插入排序稳定性(稳定):稳定性排原创 2021-03-11 20:04:17 · 244 阅读 · 0 评论