- 1、本文档共123页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
数据结构——C语言描述(慕课版);;待排序数据可以全部一次性载入内存,排序操作只和内存打交道。;;内排序算法;;;第一趟比较:最大元素移到序列尾部;voidbubbleSort(inta[],intn)
{inti,j,tmp;intchangeFlag=1;
for(j=n;j1;j--)
{if(!changeFlag)break;//上一轮无交换
changeFlag=0;
for(i=1;ij;i++)
if(a[i-1]a[i])
{tmp=a[i-1];a[i-1]=a[i];a[i]=tmp;changeFlag=1;}
}
}
;加changeFlag标志,当某趟比较无交换发生,表明序列有序,排序结束。;;相等不交换,保持排序前后相等元素相对先后不变,为稳定排序。;;;;voidinsert(intb[],intn,intx)
//n为有序表a中当前元素的个数,x为待插入新元素
{inti,j;
?for(i=n-1;i=0;i--)//从后往前找第一个不比x大的元素
if(b[i]=x)break;
for(j=n-1;ji;j--)//将所有大于x的元素后移一位
b[j+1]=b[j];
b[i+1]=x;//在腾出的位置上存x
};voidinsertSort(inta[],intn)
{inti;
//将前i个元素视作有序序列,将第i+1个元素插入到前面i个元素
//组成的有序序列中
for(i=1;in;i++)
insert(a,i,a[i]);
};;大于待插入的值的元素才后移,稳定排序。;插入排序改进——折半插入法:;第一趟排序:step=5;第二趟排序:step=2;;;;归并思路:两个有序序列归并为一个有序序列。;经过a[i],b[j]比较后,c[k]取小者a[i],i=i+1,k=k+1,j不变:;经过a[i],b[j]比较后,c[k]取小者b[j],i=i+1,k=k+1,j不变:;i越界,序列c抄下序列b中所有剩余元素:j=j+1,k=k+1:;;归并排序利用两个序列归并思想:分割+合并;;归并按照分割的逆序,因此可以用递归实现。
原始序列在一个数组中,处理时,将数组元素等分为二,前一序列下标范围[start,mid];后一序列下标范围为[mid+1,end]。;voidmerge(inta[],intstart,intmid,intend)
{ inti,j,k;int*c;
? //创建实际空间存储合并后结果
c=(int*)malloc((end-start+1)*sizeof(int));
i=start;j=mid+1;k=0;
//两个有序序列中元素的比较合并
while((i=mid)(j=end))
{ if(a[i]=a[j])
{c[k]=a[i]; i=i+1; }; else {c[k]=a[j]; j=j+1; }
k=k+1;
}
?
//若序列1中i未越界,抄写剩余元素
while(i=mid)
{c[k]=a[i];i=i+1;k=k+1;}
//若序列2中j未越界,抄写剩余元素
while(j=end)
{c[k]=a[j];j=j+1;k=k+1;}
;//将合并结果写回原来的数组
for(i=0;ik;i++)
a[start+i]=c[i];
//释放临时数组
free(c);
};voidmergeSort(inta[],intstart,intend)
{intmid;
if(start==end)return;//只有1个元素,视作有序,结束分割
else
{
您可能关注的文档
最近下载
- 小学研究课题立项申报:基于小学生高阶思维发展的课堂微项目活动设计研究.docx
- 网站安全等级保护--应急预案.docx
- 输送带发展前景分析.pptx
- IPC-6018c,6018cs,6017,6016,6015,6013d,6012e,ds,da 英文资料分享.pdf
- 高中数学公式(经典).doc VIP
- 顶管施工测量方案.doc
- 2024年度医院中医肛肠外科科带教计划课件.pptx
- 全国青少年劳动技能与智能设计大赛赛题与评价标准.PDF
- 2021-2022学年福建省宁德市校际联盟八年级(上)第一次月考英语试卷(附答案详解).docx VIP
- 2023年(最全版)二级建造师考试真题及参考答案.docx
文档评论(0)