欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOCX文档下载  

    八大排序算法总结.docx

    • 资源ID:11967956       资源大小:15.78KB        全文页数:5页
    • 资源格式: DOCX        下载积分:2
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要2
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    八大排序算法总结.docx

    .插入排序1.直接插入排序原理:将数组分为无序区和有序区两个区,然后不断将无序区的第一个元素按大小顺序插入到有序区中去,最终将所有无序区元素都移动到有序区完成排序。要点:设立哨兵,作为临时存储和判断数组边界之用。实现:VoidInsertSort(NodeL,intlength)Inti,j;/分别为有序区和无序区指针for(i=1;i<length;i+)/逐步扩大有序区j=i+1;if(Lj<Li)L0=Lj;/存储待排序元素While(L0<Li)/查找在有序区中的插入位置,同时移动元素Li+1=Li;/移动i-;/查找Li+1=L0;/将元素插入i=j-1;/还原有序区指针2.希尔排序原理:又称增量缩小排序。先将序列按增量划分为元素个数相同的若干组,使用直接插入排序法进行排序,然后不断缩小增量直至为1,最后使用直接插入排序完成排序。要点:增量的选择以及排序最终以1为增量进行排序结束。实现:VoidshellSort(NodeL,intd)While(d>=1)/直到增量缩小为1Shell(L,d);d=d/2;/缩小增量VoidShell(NodeL,intd)Inti,j;For(i=d+1;i<length;i+)if(Li<Li-d)L0=Li;j=i-d;While(j>0&&Lj>L0)Lj+d=Lj;/移动j=j-d;/查找Lj+d=L0;交换排序1.冒泡排序原理:将序列划分为无序和有序区,不断通过交换较大元素至无序区尾完成排序。要点:设计交换判断条件,提前结束以排好序的序列循环。实现:VoidBubbleSort(NodeL)Inti,j;Boolischanged;/设计跳出条件For(j=n;j<0;j-)ischanged=false;For(i=0;i<j;i+)If(Li>Li+1)/如果发现较重元素就向后移动Inttemp=Li;Li=Li+1;Li+1=temp;Ischanged=true;If(!ischanged)/若没有移动则说明序列已经有序,直接跳出Break;2.快速排序原理:不断寻找一个序列的中点,然后对中点左右的序列递归的进行排序,直至全部序列排序完成,使用了分治的思想。要点:递归、分治实现:选择排序1.直接选择排序原理:将序列划分为无序和有序区,寻找无序区中的最小值和无序区的首元素交换,有序区扩大一个,循环最终完成全部排序。要点:实现:VoidSelectSort(NodeL)Inti,j,k;/分别为有序区,无序区,无序区最小元素指针For(i=0;i<length;i+)k=i;For(j=i+1;j<length;j+)If(Lj<Lk)k=j;If(k!=i)/若发现最小元素,则移动到有序区Inttemp=Lk;Lk=Li;Li=Ltemp;2.堆排序原理:利用大根堆或小根堆思想,首先建立堆,然后将堆首与堆尾交换,堆尾之后为有序区。要点:建堆、交换、调整堆实现:VoidHeapSort(NodeL)BuildingHeap(L);/建堆(大根堆)For(inti=n;i>0;i-)/交换Inttemp=Li;Li=L0;L0=temp;Heapify(L,0,i);/调整堆VoidBuildingHeap(NodeL)For(i=length/2-1;i>0;i-)Heapify(L,i,length);归并排序原理:将原序列划分为有序的两个序列,然后利用归并算法进行合并,合并之后即为有序序列。要点:归并、分治实现:VoidMergeSort(NodeL,intm,intn)Intk;If(m<n)K=(m+n)/2;MergeSort(L,m,k);MergeSort(L,k+1,n);Merge(L,m,k,n);基数排序原理:将数字按位数划分出n个关键字,每次针对一个关键字进行排序,然后针对排序后的序列进行下一个关键字的排序,循环至所有关键字都使用过则排序完成。要点:对关键字的选取,元素分配收集。实现:VoidRadixSort(NodeL,length,maxradix)Intm,n,k,lsp;k=1;m=1;Inttemp10length-1;Empty(temp);/清空临时空间While(k<maxradix)/遍历所有关键字For(inti=0;i<length;i+)/分配过程If(Li<m)Temp0n=Li;ElseLsp=(Li/m)%10;/确定关键字Templspn=Li;n+;CollectElement(L,Temp);/收集n=0;m=m*10;k+;;.

    注意事项

    本文(八大排序算法总结.docx)为本站会员(scccc)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开