排序算法有:
冒泡排序:比较简单,如果不追求效率的话,可以使用这个。序列的初始状态为"正序",则冒泡排序过程只需进行一趟排序,在排序过程中只需进行n-1次比较,且不移动记录;反之,若记录序列的初始状态为"逆序",则需进行n(n-1)/2次比较和记录移动。因此冒泡排序总的时间复杂度为O(n*n)。
选择排序:相对来说也比较简单,最好情况是,已经有序,交换0次;最坏情况是,逆序,交换n-1次,n值较小时,选择排序比冒泡排序快。
简单插入排序:简单插入排序效率还可以,每趟排序后,前面的序列都基本有序。
希尔排序:不需要大量的辅助空间,也基于插入排序。由于使用了增量,对中等大小规模表现良好。
归并排序:采用采用分治法,稳定的排序,一般用于对总体无序,但是各子项相对有序的数列
快速排序:快速排序是总体排序性能最好的一种排序方法,但是用到了递归,它有一个特点,就是越无序性能越高,如果元素已经基本无序,最好别用快速排序
堆排序:是一个树形选择排序,一般用的少
基数排序:基数排序的效率不错,O (nlog(r)),一般来说优于比较性排序。
这些算法在c语言版的数据结构上都有明确的讲解,你可以找这本书看看,清华大学,严蔚敏 数据结构,c语言版
|