![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序算法—Java
destiny_java
这个作者很懒,什么都没留下…
展开
-
折半插入排序
折半插入排序: 折半插入排序是一个稳定的排序算法,时间复杂度为O(n^2)。 下面实现的是从小到大排序: package InsertSort; import java.util.Scanner; public class BinaryInsertSort { public static void binaryInsertSort(int num[]){ int原创 2017-09-29 14:32:31 · 258 阅读 · 0 评论 -
直接插入排序
直接插入排序: 直接插入排序是一个稳定的排序方法,时间复杂度为O(n^2)。 基本思想:从第二个数开始排序比较,如果比前面的数小,则与前面的数交换位置。再对第三个数进行排序比较,先和第二个数进行比较,如果比第二个数小,则与之交换位置,再和第一个数进行比较,如果比第一个数还小,则交换位置……类似排序所有的数。排序的数最终会处在最终位置。 下面实现的是从小到大排序(输入任意个原创 2017-09-29 09:35:08 · 155 阅读 · 0 评论 -
冒泡排序
冒泡排序: 冒泡排序是一个稳定的排序方法,平均复杂度为O(n^2)。 基本思想: 从后往前(或从前往后)两两比较相邻的元素的值,若为逆序(即A[i-1]>A[i]),则交换它们,直到序列比较完。此为一趟冒泡 结果将最小的元素交换到待排序列的第一个位置。下一趟冒泡时,前一趟确定的最小元素不再参与比较,待排序列减少一个元素,每趟冒泡的结果把 序列中的最小元素放到了序列的最终位置,最多原创 2017-09-28 19:57:49 · 336 阅读 · 0 评论 -
希尔排序
希尔排序: 希尔排序是一个不稳定的排序方法,当n在某个特定范围时,希尔排序的时间复杂度约为O(n^1.3),在最坏情况下希尔排序的时间复杂度为O(n^2)。 基本思想:先将待排序表分割成若干个形子序(按照规定的增量步长),分别进行直接插入排序,当整个表中元素已基本有序的情况下,再对全体元素进行一次直接插入排序。 例如:待排序序列为[6,5,4,3,2,原创 2017-10-01 14:58:20 · 184 阅读 · 0 评论 -
简单选择排序
简单选择排序: 简单选择排序是一个不稳定的排序方法,时间复杂度为O(n^2)。 基本思想:每一趟(例如第i趟)在后面n-i+1(i=1,2,…,n-1)个待排序元素中选取关键字最小的元素,作为有序子序列的第i个元素,直到第n-1趟做完,待排序元素只剩下1个,就不用再选了。 下面实现的是从小到大排序: package chooseSort; import jav原创 2017-10-01 16:24:40 · 159 阅读 · 0 评论 -
快速排序
快速排序: 快速排序是一个不稳定的排序方法,平均时间复杂度为O(nlog2n)。 基本思想:待排序序列中,取第一个元素作为基准,先从后向前找第一个比基准小的数(例如下标为i),把该数放在基准的位置上,再从前向后找第一个比基准大的数,把该数放在i位置上,如此循环,直到基准保持在某个固定的位置上不动,基准左边的数都比其小,基准右边的数都比其大。再分别对比基准大的部分和比基准小的部原创 2017-10-01 17:15:10 · 151 阅读 · 0 评论