数据结构 第八章学习小结

第八章我们了解的主要是排序,这一章还是挺难的,特别是快速排序和堆排序等等部分对于我来说还是理解欠佳,得多看看这一部分的内容。

对于这一部分的内容,我们主要对算法,内容还有时间和空间复杂度等方面去进行学习的。

在这一部分的归纳中,我在网上找到了以为博主的归纳表,我觉得很详细,就在这里借用了:

数据结构 第八章学习小结_第1张图片

下面我们分开来讲

首先在插入排序中:

直接插入排序和折半插入排序,前者是用于顺序和链式存储,而后者是只适用于顺序,前者对于记录无序,n较大时时间开销比较大,而后者则不会。

然后是希尔排序:

void ShellPass(SeqList R,int d)
{//希尔排序中的一趟排序,d为当前增量
for(i=d+1;i<=n;i++) //将R[d+1..n]分别插入各组当前的有序区
if(R[ i ].key0&&R[0].key 
 

这里是希尔算法的另外一种代码方法,应该书中的代码对比来看。

然后对于这样一种算法,跳跃式的移动,只适用于顺序结构,记录的总次数比直接插入要少,n越大时越明显越明显。

 

冒泡排序:

可用于链式,数据多时不建议使用。

快速排序:

这里也是非顺次的移动导致不稳定,适用于无顺且n较大时的情况。

选择排序:堆排序

步骤是 调整堆,建出堆和算法实现

这里不是很熟,要多回归课本,加深理解。

 

归并排序:

注意时间复杂度是O(nlogn);还有也是适用于链式和顺序,不需要加载存储空间。

 

作业的一些错题的整理:

外排序的瓶颈在于将记录从输入缓冲区归并入输出缓冲区。

就排序算法所用的辅助空间而言     堆排序 < 快速排序 < 归并排序

另外,第八章实践一要多看书,回归课本,加深理解。

你可能感兴趣的:(数据结构 第八章学习小结)