上周我们学习了最简单的数组排序,直接调用java的Arrays包中的sort()方法就可以对数组进行简单的升序排序。降序就是利用Collections.reverseOrder()方法进行排序。本周呢我们继续来学习数组的另外几种高大上一点的排序算法,主要包括冒泡、快速、选择和直接插入排序法。
一、冒泡排序法
冒泡排序的基本思想是:对比相邻的元素值,如果满足条件就交换元素值,把较小的元素值移动到数组前面,把大的元素值移动到数组后面(也就是交换两个元素的位置),这样数组元素就像气泡一样从底部上升到顶部。
二、快速排序法
快速排序的基本思想是:通过一趟排序,将要排序的数据分隔成独立的两部分,其中一部分的所有数据比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此使整个数据变成有序序列。
三、选择排序法
选择排序是指每一趟从待排序的数据元素中选出最大(或最小)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。
四、直接插入排序法
直接插入排序法的基本思想是:将n个有序数存放在数组a中,要插入的数为x,首先确定x插在数组中的位置p,然后将p之后的元素都向后移一个位置,空出a(p),将x放入a(p),这样可实现插入x后仍然有序。
五、实战
5.1 冒泡排序
5.2 快速排序
5.3 选择排序
5.4 直接插入排序