本文不适合初学者和尚未理解排序算法的人,主要作为熟手归纳之用,所以本文力求以最简短的语言描述,以便记忆其原理。
以下i的起始值都为0
选择排序:对一个序列A[0], A[1], A[2], ..., A[i], ..., A[n],假定A[0]至A[i]已有序,A[i+1]至A[n]尚无序,在无序序列中选择出最小元素与A[i+1]交交换,作为新的A[i+1]。
插入排序:对一个序列A[0], A[1], A[2], ..., A[i], ..., A[n],假定A[0]至A[i]已有序,A[i+1]至A[n]尚无序,将A[i+1]插入到A[1]和A[i]之间的合适位置,插入后仍有序。
冒泡排序:对一个序列A[0], A[1], A[2], ..., A[i], ..., A[n],假定A[0]至A[i]已有序,A[i+1]至A[n]尚无序,从A[n]开始到A[i+1],逐个两两比较,假定顺序为左小右大,将逆序的两者对换。
快速排序:对一个序列A[0], A[1], A[2], ..., A[i], ..., A[n]都无序,任选一个元素A[i],将小于A[i]的全部放到右边,大于A[i]的放到左边,对生成的两个子序列B[...]和C[...],重复此过程。
归并排序:对一个序列A[0], A[1], A[2], ..., A[i], ..., A[n]都无序,将其元素两两组合分成n/2个子序列,先把子序列排好序,再把子序列两两归并组成大的子序列,再重复此过程。
希尔排序:对一个序列A[0], A[1], A[2], ..., A[i], ..., A[n]都无序,选一个步长k,按步长将序列分成k个子序列,将所有子序列排成有序,降低k的值,重复此过程,直至k为1。
堆 排 序:对一个序列A[0], A[1], A[2], ..., A[i], ..., A[n]都无序,组成一个堆,取与堆顶,再重新组成堆,重复此过程,直至堆耗尽。