请尊重原创,谢谢~
一、冒泡排序
时间复杂度:O(n^2)
二、选择排序
时间复杂度:O(n^2)
三、插入排序
时间复杂度:O(n^2)
四、希尔排序
希尔排序是插入排序的一种,又称“缩小增量排序”,是插入排序的一种更高效的改进版。
排序原理:
1、选定一个增长量h,按照增长量h作为数据分组的依据,对数据进行分组;
2、对分好组的每一组数据完成插入排序;
3、减小增长量,最小减为1,重复第二步操作
增量 = 数组长度 / 2
五、归并排序
排序原理:
1、尽可能的一组数据拆分成两个元素相等的子组,并对每一个子组继续拆分,直到拆分后的每一个子组的元素个数是1为止;
2、将相邻的两个子组进行合并成一个有序的大组;
3、不断重复步骤2,直到最终只有一个组为止;
合并的过程
时间复杂度:O(nlogn)
六、快速排序
排序原理:
1、首先设定一个分界值,通过该分界值将数组分成左右两个部分;
2、将大于等于分界值的数据放在数组的右边,小于分界值的数据放在数组的左边,此时左边部分中各个元素都小于分界值,右边部分中各个元素都大于等于分界值;
3、然后,左边和右边的数据可以独立排序,对于左边的数组数据,同样取一个分界值,将该部分数据分成左右两个部分,同样左边放较小值,右边放较大值,右边的数组数据做同样的处理;
4、重复上述过程,可以看出,这是一个递归方式,通过递归左侧部分排好序后,再递归右侧部分的排序,当左侧和右侧两个部分的数组完全排好序,整个数组的顺序也就排好了;
快速排序的寻找切分分界值的过程:
时间复杂度:O(nlogn)