十种常见排序算法可以分为两大类:
比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序。
非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。
1.冒泡排序
【1】比较相邻的元素。如果第一个比第二个大,就交换它们两个;
【2】对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素应该会是最大的数;
【3】针对所有的元素重复以上的步骤,除了最后一个;
重复步骤1~3,直到排序完成。
2.选择排序
n个记录的直接选择排序可经过n-1趟直接选择排序得到有序结果。具体算法描述如下: 【1】初始状态:无序区为R[1..n],有序区为空;
【2】第i趟排序(i=