数据结构导论-插入排序和交换排序

首先排序分为两大类:内部排序,外部排序,咱们只讨论内部的

一、插入排序

分为直接插入排序、折半插入排序和希尔排序

(1)直接插入排序:

一种情况是数据递减序,数据比较和移动量最大,时间复杂度达到O(n²);

另一种情况数据是递增序,比较和移动最少为O(n)

(2)折半插入排序

由于插入第i个元素到R[1]到R[i-1]之间时,前i个数据是有序的,所以可以用折半查找确定插入位置,然后插入

(3)希尔排序

在实际应用中,步长的选取可简化为表长n的一半(n/2),以后每次减半,最后为1。插入的改进,最后一趟已基本有序,比较次数和移动次数相比直接插入最后一趟更少

二、交换排序

分为冒泡排序、快速排序

(1)冒泡排序

重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

(2)快速排序

一种情况:每次支点总在中间,时间复杂度为O(nlog2n),平均O(nlog2n)。

最坏情况:数据已是递增或递减,O(n2)。key的选择越靠近中央,即左右两个子序列长度越接近,排序速度越快。越无序越快。

你可能感兴趣的:(数据结构导论-插入排序和交换排序)