排序复习

来源:互联网 发布:windows 10 powershell 编辑:程序博客网 时间:2024/06/01 09:40

一、简单排序

1、直接插入排序:顾名思义,在已经排好的队列中不断把新的数插到合适的位置中;时间复杂度O(n²),空间复杂度:O(1)

2:冒泡排序:每次从第一个数开始逐个比较相邻的数,若逆序则交换位置;时间复杂度O(n²),空间复杂度:O(1)

3:简单选择排序:每次选出最小的数并和对应位置的数交换位置;时间复杂度O(n²),空间复杂度:O(1)


希尔排序:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2<d1重复上述的分组和排序,直至所取的增量

  
=1(
  
<
  
…<d2<d1),即所有记录放在同一组中进行直接插入排序为止。



快速排序:取关键字。通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 (O(n logn))


堆排序:堆排序利用了大根堆(或小根堆)堆顶记录的关键字最大(或最小)这一特征,使得在当前无序区中选取最大(或最小)关键字的记录变得简单。


归并排序:将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并

0 0