数据结构习题课.ppt

数据结构习题课.ppt

ID:51461488

大小:334.50 KB

页数:37页

时间:2020-03-23

数据结构习题课.ppt_第1页
数据结构习题课.ppt_第2页
数据结构习题课.ppt_第3页
数据结构习题课.ppt_第4页
数据结构习题课.ppt_第5页
资源描述:

《数据结构习题课.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、数据结构习题第7章吉林大学计算机科学与技术学院谷方明第7章作业247页:每组的第1题是必交的,即7-2、7-5、7-18、7-24、7-497-2、7-3、7-5、7-8、7-10、7-18、7-24、7-26、7-30、7-31、7-35、7-367-49、7-507-2若对序列(7,3,1,8,6,2,4,5)按从小到大排序,请写出冒泡排序的第一趟结果。参考答案3,1,7,6,2,4,5,87-3设文件(R1,R2,…,Rn)以单链表方式表示,指针变量FIRST指向表头结点,且表中的结点结构为:其中KEY为该结点的关键词域,LINK为链接域。请给出这种线性表的直接插入排序算法,

2、并要求算法的时间复杂度为O(n2),且算法是稳定的。KEYLINK算法InsertSort(FIRST.FIRST)/*对单链表直接插入排序,FIRST指向表头结点*/IS1[边界]IF(LINK(FIRST)=NULLORLINK(LINK(FIRST))=NULL)THENRETRUN.IS2[插入排序]q←LINK(FIRST).q0←LINK(q).WHILE(q<>NULL)(p←LINK(FIRST).p0←FIRST.WHILE(KEY(p)<=KEY(q)ANDLINK(p)<>q)DO(p0←p.p←LINK(p).).IF(KEY(p)>KEY(q))THEN(

3、LINK(q0)←LINK(q).LINK(p0)←q.LINK(q)←p.q←LINK(q0).).ESLE(q0←q.q←LINK(q0).).)▌7-5设计一算法,在尽可能少的时间内重排数组,使所有取负值的关键词放在所有取非负值的关键词之前,并分析算法的时间复杂度。基本思想:以0为基准记录,使用快速排序的一次分划过程即可,时间复杂度为O(n).算法Part(A,n.A)/*以0为基准元素一次分划*/P1[初始化]i←1.j←n.P2[以0分划]WHILEi0ANDi

4、iRj.)▌7-8讨论冒泡排序算法的稳定性。参考答案冒泡排序中,每一趟冒泡,相邻的关键词只有满足(Rj>Rj+1)时才会发生交换,关键词相同的记录不会发生交换,即相同位置不变,因此是冒泡排序算法是稳定的。7-10类似于冒泡过程(从下到上),与之对应的是下沉过程(从上到下)。如果排序是冒泡和下沉的交替过程,证明如果经过一趟冒泡和一次下沉后发现Rj和Rj+1(1jn1)没有交换,则它们已经进入最终排序位置。参考答案证明:如果经过一趟冒泡和一次下沉后发现Rj和Rj+1(1jn1)没有交换,那么有R1<=R2<=R3<=…<=Rn即所有记录已经进入最终排序位置。7-18奇偶交

5、换排序算法的基本思想描述如下:排序过程通过对文件x[i](l≤i≤n)的若干次扫描来完成,第奇数次扫描,对所有下标为奇数的记录x[i]与其后面的记录x[i+1](l≤i≤n–1)相比较,若x[i].KEY>x[i+1].KEY,则交换x[i]和x[i+1]的内容;第偶数次扫描,对所有下标为偶数的记录x[i]与其后面的记录x[i+1](2≤i≤n–1)相比较,若x[i].KEY>x[i+1].KEY,则交换x[i]和x[i+1]之内容,重复上述过程直到排序完成为止.(1)排序的终止条件是什么?(2)完成该算法的具体设计.(3)分析该算法的平均运行时间.算法Sort(X,n)S1[一趟

6、扫描过程中,均没有记录交换则算法终止]change←1.while(change)(change←0.fori←1ton-1step2//奇交换if(X[i].key>X[i+1].key)(X[i]X[i+1].change←1.)fori←2ton-1step2//偶交换if(X[i].key>X[i+1].key)(X[i]X[i+1].change←1.)))▌(1)最好情况下,比较一趟.每趟中奇交换偶交换比较次数共(n-1)次,无记录交换.//正序(2)最坏情况下比较(n/2)+1趟,总比较次数为(n-1)*(n/2+1)次.每次比较都交换,总交换次数为(n-1)*n

7、/2或(n-1)*3n/2.//逆序(3)最好时间O(n)最坏时间O(n2)平均时间O(n2)(书上P201反序对的平均数)正确性证明:数学归纳法对元素个数n进行归纳当n=1是,算法正确假设当n<=k时,算法能对n个元素的数组进行排序,则当n=k+1时,进行一趟分划后,轴心元素R[s]进入了最终排序应在的位置R[i],即R[i]之前的元素R[s]~R[i-1]都小于等于R[i],R[i]之后的元素R[i+1]~R[e]都大于等于R[i]。由于R[s]~R[i-1],R

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。