Java排序算法全解析
1.冒泡排序
核心本质:前后两个数值之间进行对比排序
2.选择排序(简单选择排序)
- 核心本质:找到待排序数组中最小值,然后将其和待排序数组的首位进行交换
- 如何找最小值:定义一个临时变量存储最小值,假设第一个数是最小值,依次进行比较
- 插入排序
- 核心本质:把待排序数组的值插入到已经排好序的数组当中
- 假设数组的第一个数据是已经排好序的,采用对比交换的方法,类似向前的冒泡排序。
- 希尔排序(缩小增量排序)
- 在插入排序的基础上完成的。
- 插入排序过程中,如果后边的数据比较小,前边的数据比较大,就可能会导致小数据向前移动的次数比较多,进而将整个算法的效率降低。
3.快速排序
步骤:
1.将待排序数组当中第一个数作为基准数
2.定义i和j游标,分别指向待排序数组的第一位和最后一位
3.让j游标先移动,去找比当前基准数小的数据,找到后停止。
为什么先让j游标移动?
4.让i游标去移动,找比当前基准数大的数据,找到后停止。
5.判断i和j游标是否相遇。
5.1未相遇,i和j指向的值进行交换,然后继续执行3、4、5步。
5.2相遇,相遇位置的数和基准数进行交换
以基准数为界,将数组拆分成左右两部分重新执行上述步骤
时间复杂度:nlog(n)
4.基数排序(桶的思想)
10个桶,按照个十百位排序