链表排序北邮数据结构实验


    
    数 结 构









    实验名称:________链表排序___________
    学生姓名:_____________________
    班 级:________________
    班序号:_________________________
    学 号:________________
    日 期:_______________
    1.实验求
    链表实现面种排序算法进行较
    排序算法:1插入排序
    2泡排序
    3快速排序
    4简单选择排序
    5
    求:1测试数分成三类:正序逆序机数
    2三类数较述排序算法中关键字较次数移动 次数(中关键字交换计3次移动)
    3三类数较述排序算法中算法执行时间精 确微秒(选作)
    423结果进行分析验证述种算法时间复杂度编写测试main()函数测试排序算法正确性
    2 程序分析
    21 存储结构
    双链表
    Data Perior Next


    22 程序流程 (程序结构类关系图等表明程序构成容般流程图等)







    开始


    读取数


    选择排序方式



    输出排序结果

    结束



    23 关键算法分析
    定义节点:
    struct Node{
    int data
    Node* next
    Node* period
    }
    插入排序:
    void InsertionSort(Node*qint n){
    Node*firstq
    Node*teqq
    Node*pq>next
    Node*pointp
    int wtime0compar0
    while(pNULL){
    compar+1
    if(p>data

    period>data){
    wp>data
    teqp>period
    while(teqNULL){
    compar+1
    if(teq>data>w){
    teq>next>datateq>data
    time+1
    if(teq>periodNULL)
    {teq>dataw
    time+1}
    }
    else{
    teq>next>dataw
    time+1
    break}
    teqteq>period
    }
    compar1

    }

    pp>next

    }
    cout<<插入排序序列:
    while(firstNULL){
    cout<data<<
    firstfirst>next}
    cout<<\n插入排序较次数< cout<<插入排序移动次数<

    }
    链表分序区序区分序区元素插入序区相应位置
    次首先找序区中链节然摘链表新位置插入
    时间复杂度:O(n^n)
    空间复杂度:O(n)

    泡排序:
    void BubblingSort(Node*qint n){
    Node* tep
    int qu
    int time0
    int compar0
    tepq
    for(int k0k tepq
    do{ compar+1
    if(tep>data>tep>next>data){
    qutep>data
    tep>datatep>next>data
    tep>next>dataqu
    time+3}
    teptep>next
    }while(tep>nextNULL)
    }
    cout<<泡排序序列:
    while(qNULL){
    cout<data<<
    qq>next
    }
    cout<<\n泡排序较次数< cout<<泡排序移动次数<
    }
    数组实现样进行n1趟趟前面数面数进行交换趟实现趟放面
    时间复杂度:O(N^2)
    空间复杂度O(n)

    选择排序:
    void SelectSort(Node*qint n){
    Node*i*j*s*first
    firstiq
    int w0
    int time0compar0
    while(iNULL){
    sji
    while(sNULL){
    compar+1
    if(s>datadata)
    js
    ss>next}
    wi>data
    i>dataj>data
    j>dataw
    if(ij)
    time+3
    ii>next}
    cout<<简单选择排序序列:
    while(firstNULL){
    cout<data<<
    firstfirst>next}
    cout<<\n简单选择排序较次数< cout<<简单选择排序移动次数<
    }
    轮找数第i趟交换交换n趟泡排序优化交换次数
    时间复杂度:O(n^2)
    空间复杂度:O(n)

    快速排序:
    void FastSort(Node*lowNode*high){
    Node* beginlow
    Node *pivotlow
    if(lowhigh){
    pivotPartion(lowhigh)
    if(pivotlow) FastSort(lowpivot>period)
    if(pivothigh) FastSort(pivot>nexthigh)
    }

    }
    Node* Partion(Node*lowNode*high){
    Node* Lnew Node
    L>datalow>data
    while(lowhigh){
    while(lowhigh&&high>data>L>data)
    {highhigh>period
    rcompar+1}
    rcompar+1
    if(lowhigh)rtime+1
    low>datahigh>data

    while(lowhigh&&low>datadata)
    {lowlow>next
    rcompar+1}
    rcompar+1
    if(lowhigh)rtime+1
    high>datalow>data
    }
    low>dataL>data
    return low
    }
    次第作轴值交换次放左面放右面
    接着递轴值左面链表右面链表分做相操作直链结止
    时间复杂度:O(nlog n)
    空间复杂度:调栈空间O(log2n)




    24
    总体较种排序性:
    排序方法
    均情况
    情况
    坏情况
    插入排序
    O(n2)
    O(n)
    O(n2)
    泡排序
    O(n2)
    O(n)
    O(n2)
    快速排序
    O(nlog2n)
    O(nlog2n)
    O(n2)
    简单选择排序
    O(n2)
    O(n2)
    O(n2)


















    3 程序运行结果分析




    4 总结
    41实验难点关键点
    1通数组排序较链表排序花时间更长增加指针移动
    2递调排序算法时间较长涉函数调进栈出栈问题



    42心体会
    通次试验进步链表应进步解时排序种基数操作较深刻认识时排序方式链表排序代码编写时明白情况处理方式养成更严谨编写代码思维方式


    附:程序代码
    #include
    #include
    using namespace std
    int rtime0rcompar0
    struct Node{
    int data
    Node* next
    Node* period
    }
    void InsertionSort(Node*qint n)
    void BubblingSort(Node*qint n)
    void FastSort(Node*lowNode*high)
    void SelectSort(Node*qint n)
    Node* Partion(Node*lowNode*high)
    void main(){
    int data[200]
    int k1
    Node* q*first
    ifstream ifile(DTESTdatatxt)
    int i0n0
    cout<<文件读入数:< while(ifile>>data[i]){
    cout< i++
    n++
    }
    Node* pnew Node
    p>datadata[0]
    p>nextNULL
    p>periodNULL
    firstp
    while(k qnew Node
    q>datadata[k]
    q>periodp
    p>nextq
    pq
    k++
    }
    q>nextNULL
    Node*lastq
    qfirst
    cout<<选择排序方式:<cout<<1插入排序\n2泡排序\n3快速排序\n4简单选择排序\n5退出<int choice
    cin>>choice
    while((choice1)&(choice2)&(choice3)&(choice4)&(choice5)){
    cout<<选项请重新输入
    cin>>choice}
    switch(choice){
    case 1InsertionSort(firstn)
    break
    case 2BubblingSort(firstn)
    break
    case 3FastSort(firstlast)
    cout<<快速排序序列:
    while(firstNULL){
    cout<data<<
    firstfirst>next
    }
    cout<<\n快速排序较次数< cout<<快速排序移动次数< break
    case 4SelectSort(firstn)
    break
    case 5return
    }

    system(pause)
    }
    void BubblingSort(Node*qint n){
    Node* tep
    int qu
    int time0
    int compar0
    tepq
    for(int k0k tepq
    do{ compar+1
    if(tep>data>tep>next>data){
    qutep>data
    tep>datatep>next>data
    tep>next>dataqu
    time+3}
    teptep>next
    }while(tep>nextNULL)
    }
    cout<<泡排序序列:
    while(qNULL){
    cout<data<<
    qq>next
    }
    cout<<\n泡排序较次数< cout<<泡排序移动次数<
    }
    void SelectSort(Node*qint n){
    Node*i*j*s*first
    firstiq
    int w0
    int time0compar0
    while(iNULL){
    sji
    while(sNULL){
    compar+1
    if(s>datadata)
    js
    ss>next}
    wi>data
    i>dataj>data
    j>dataw
    if(ij)
    time+3
    ii>next}
    cout<<简单选择排序序列:
    while(firstNULL){
    cout<data<<
    firstfirst>next}
    cout<<\n简单选择排序较次数< cout<<简单选择排序移动次数<
    }
    void InsertionSort(Node*qint n){
    Node*firstq
    Node*teqq
    Node*pq>next
    Node*pointp
    int wtime0compar0
    while(pNULL){
    compar+1
    if(p>data

    period>data){
    wp>data
    teqp>period
    while(teqNULL){
    compar+1
    if(teq>data>w){
    teq>next>datateq>data
    time+1
    if(teq>periodNULL)
    {teq>dataw
    time+1}
    }
    else{
    teq>next>dataw
    time+1
    break}
    teqteq>period
    }
    compar1

    }

    pp>next

    }
    cout<<插入排序序列:
    while(firstNULL){
    cout<data<<
    firstfirst>next}
    cout<<\n插入排序较次数< cout<<插入排序移动次数<

    }
    void FastSort(Node*lowNode*high){
    Node* beginlow
    Node *pivotlow
    if(lowhigh){
    pivotPartion(lowhigh)
    if(pivotlow) FastSort(lowpivot>period)
    if(pivothigh) FastSort(pivot>nexthigh)
    }

    }
    Node* Partion(Node*lowNode*high){
    Node* Lnew Node
    L>datalow>data
    while(lowhigh){
    while(lowhigh&&high>data>L>data)
    {highhigh>period
    rcompar+1}
    rcompar+1
    if(lowhigh)rtime+1
    low>datahigh>data

    while(lowhigh&&low>datadata)
    {lowlow>next
    rcompar+1}
    rcompar+1
    if(lowhigh)rtime+1
    high>datalow>data
    }
    low>dataL>data
    return low
    }






    文档香网(httpswwwxiangdangnet)户传

    《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
    该内容是文档的文本内容,更好的格式请下载文档

    下载文档到电脑,查找使用更方便

    文档的实际排版效果,会与网站的显示效果略有不同!!

    需要 2 香币 [ 分享文档获得香币 ]

    下载文档

    相关文档

    数据结构实验报告

    实验报告课程:数据结构 班级:网络工程 学号: 姓名: 实验1 链表的插入和删除一、实验目的 1、...

    2年前   
    332    0

    北邮学生毕业留言

    北邮学生毕业留言  一份北邮学生的毕业留言推荐,欢迎收看  金色的火焰遍地燃起,那么地亮堂耀眼。远方戈壁。天际流沙。绵长的沙线分割着天之蓝与地之黄。  于河西端口,于长城遗存于历史编年的残存烽...

    11年前   
    738    0

    数据结构实验报告《三、串及其应用》

    数据结构实验报告- - - - 串及其应用之文学研究助手 专业班级: 电信班 ...

    3年前   
    1305    0

    数据结构综合性实验

     数据结构实验实验六数据结构综合性实验  计算机科学与技术系X班 组 长:X ...

    1年前   
    271    0

    数据结构课程设计报告多关键字排序高考排序

    XX工 学 院 计算机工程学院课程设计报告设计名称: 数据结构课程设计 选题名称: 多关键字排序 姓 ...

    6个月前   
    187    0

    实验八顺序表的排序实验报告

     计算机科学与技术系 实 验 报 告 专业名称 计算机科学与技术 ...

    2年前   
    770    0

    南邮dsp上机实验报告

    南京邮电大学实 验 报 告实验名称:离散时间信号与系统的时、频域表示离散傅立叶变换和z变换 数字滤波器的频域分析和实现数字滤波器的设计课程名称 数字信号处理A(双语) ...

    1年前   
    348    0

    数据结构实习报告

    数据结构实习报告  一、需求分析1、  程序所实现的功能;2、  程序的输入,包含输入的数据格式和说明;3、  程序的输出,程序输出的形式;4、  测试数据,如果程序输入的数据量比较大,需要给...

    8年前   
    1047    0

    2018年北邮工学硕士论文开题报告范文

    北邮工学硕士论文开题报告范文  论文题目:基于仿真理论及虚拟化技术的虚拟覆盖网络模型研究  一、立题依据(包括研究目的、意义、国内外研究现状和发展趋势,需结合科学研究发展趋势来论述科学意义;或...

    6年前   
    333    0

    数据结构试题及答案多套

    数据结构试卷(一) 1数据结构试卷(二) 4数据结构试卷(三) 6数据结构试卷(四) 8数据结构试卷(五) 11数据结构试卷(六) 14数据结构试卷(七) 16数据结构试卷(八) 18数据结构...

    3年前   
    893    0

    数据结构练习题及答案

    数据结构练习题及答案第1章 绪论一、 判断题1. 数据的逻辑结构与数据元素本身的内容和形式无关。 (√)2. 一个数据结构是由一个逻辑...

    3年前   
    1082    0

    数据结构试验迷宫问题

    数据结构试验——迷宫问题(一)基本问题1.问题描述这是心理学中的一个经典问题。心理学家把一只老鼠从一个无顶盖的大盒子的入口处放入,让老鼠自行找到出口出来。迷宫中设置很多障碍阻止老鼠前行,迷宫唯...

    3年前   
    525    0

    数据结构实践报告

     数据结构实践报告学 号: 姓 名: 班 级: ...

    1年前   
    592    0

    河北省中小学实验室规章制度

    河北省中小学实验室规章制度实验员职责一、实验员要根据学校的学期工作计划和教研组的教学进度计划,制定本学科的实验教学工作学期计划。二、根据本学科教材的要求,要保证全部演示实验和学生分组实验的正常...

    4年前   
    967    0

    北滘镇中心小学语文合作学习实验报告

    北蛘蛑行男⊙в镂暮献餮习实验报告  小学语文合作学习实验报告   北蛘蛑行男⊙А∥庋噫   新课程改革的总体思路是:   面向全体学生,使所有学生都能达到课程标准所规定的学习目标;高度尊重学生...

    9年前   
    348    0

    北京邮电大学通原软件实验报告

    信息与通信工程学院通信原理软件实验报告 班 级: 姓 名: 学 号: 日...

    2年前   
    622    0

    数据结构大作业(含源代码)

    数据结构大作业作业题目: 职工信息管理系统 姓 名: 学 号: ...

    3年前   
    453    0

    数据结构练习题(含答案)

    数据结构练习题习题1 绪论1.1 单项选择题1. 数据结构是一门研究非数值计算的程序设计问题中,数据元素的① 、数据信息在计算机中的② 以及一组相关的运算等的课程。 ...

    3年前   
    1515    0

    十套数据结构试题及答案

    数据结构试卷(一) 1数据结构试卷(二) 4数据结构试卷(三) 6数据结构试卷(四) 8数据结构试卷(五) 11数据结构试卷(六) 14数据结构试卷(七) 16数据结构试卷(八) 18数据结构...

    3年前   
    652    0

    数据结构习题集附答案

    数据结构习题集附答案第一章 绪 论一、选择题1.组成数据的基本单位是( )A.数据项 B.数据类型 C.数据元素 D.数据变量2.数据结构是研究数据的( )以及它们之间的相互关系。A.理...

    3年前   
    860    0

    文档贡献者

    z***u

    贡献于2022-12-12

    下载需要 2 香币 [香币充值 ]
    亲,您也可以通过 分享原创文档 来获得香币奖励!
    下载文档