1.冒泡排序
2.1 基本思路
BubbleSort.java
对未排序的各元素从头到尾依次比较相邻的两个元素是否逆序(与欲排顺序相反),若逆序就交换这两元素,经过第一轮比较排序后便可把最大(或最小)的元素排好,然后再用同样的方法把剩下的元素逐个进行比较,就得到所要的顺序。
2.2 效率
比较和交换次数都为O(N的平方)
2.选择排序
2.1 基本思路
SelectSort.java
从所有元素中选择一个最小元素a[i]放在a[0](即让最小元素a[i]与 a[0]交换),作为第一轮;第二轮是从a[1]开始到最后的各个元素中选择一个最小元素,放在a[1]中;……依次类推。n个数要进行(n-1)轮
2.2 效率
交换次数减少到O(N),但是比较次数仍为O(N的平方)
3.插入法排序
3.1 基本思路
每拿到一个元素,都要将这个元素与所有它之前的元素遍历比较一遍,让符合排序顺序的元素挨个移动到当前范围内它最应该出现的位置。
3.2 效率
比较和交换次数都为O(N的平方),大致为N*(N-1)/4,所以这个算法比冒泡大致快一倍,比选择排序略快,尤其是部分数据已经局部有序的情况下,这个算法效率会更高
4.对象排序
对象排序其实还是比较对象里面的某个或某些属性值来进行排序