版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
{for(i=k-1;i;--i从后向前逐个插入排序{//////}{intd[MAXSIZE辅助x=L.r.key;d=x;{)//{}else{//}{L.r[1].next=0;建初始循环链表++)//{++)//{while(p<i)p=L.r[p].next;{}voidBubble_Sort1(intaintn)//na{//{{c=i+1;c}voidBubble_Sort2(intaintn)//{low=0;high=n-1;冒泡的上下界{++)//{}high--;//修改上界for(i=high;i>low;i从下向上起泡{}lowvoidBubble_Sort3(intaintn)//对上一题的算法进行化简,{intb[3];//b[0]为冒泡的下界,b[2]为上界,b[1]无用d=1;b[0]=0;b2n-1;d为冒泡方向的标识,1为向上,-1为向下while(b[0]<b[2{for(i=b[1-d];i!=b[1+d];i+=d统一的冒泡算法if((a[i]-a[i+d])*d>0)//注意这个交换条件{}b[1+d]-=d;修改边界d*=-1;//换个方向voidOE_Sort(intaintn)//{{for(i=1;i<n-1;i+=2对所有奇数进行一趟比较{}for(i=0;i<n-1;i+=2对所有偶数进行一趟比较{}typedefstructintlow;intboundary;{InitStack(S);//Sboundary类型while(low<high&&!StackEmpty(S注意排序结束的条件{//{{Push(S,{pivot+1,high});把长的子序列边界入栈high=pivot-1;//短的子序列留待下次排序}{}
{low=high;//当前子序列标志为已排好序}//{Pop(S,a从栈中取出一个子序列}{{returnlow;{if(high-low==1)//子序列只含两个元素if(L.r[low].key>L.r[high].keyL.r[low]<->L.r[high];else{}voidDivide(intaintn)//把数组a{{)while(low<high&&a[low]<0)low++;}typedefenumRED,WHITE,BLUE}colorvoidFlag_Arrange(coloraintn)//把由三种颜色组成的序列重排为按照红,白,蓝{{caseRED:caseWHITE:caseBLUE:}分析:这个算法中设立了三个指针.其中,j表示当前元素;i以前的元素全部为红色;k以后的元素全部为蓝色.这样,j的颜色,把其交换到序列的前部或者后部.{{)//{}{qs->next{H.r[1]H.r[i-1]已经是大顶堆//{}{{}voidHeap_Adjust(Heap&H,ints,intm)//H中,H.r[s+1]H.r[m]已经是堆,把{{if(j<m&&H.r[j].key<H.r[j+1].key)j++;}分析:本算法与上的堆排序算法相比,只有两处改动:1.建初始堆时,i的上限从H.length/3开始(为什么2.调整堆的时候,要从结点的三个孩子结点中选择最大的那一个,最左边的孩子的序号的计算为j=3*s-1(为什么?)voidMerge_Sort(intaintn)//{)//++)//{start1=2*l*i求出待归并的两段的上下界);//}voidMerge(intaints1,inte1,ints2,inte2)//a[s1]a[e1]和a[s2]a[e2]a[s1]a[e2]{intb[MAXSIZE];//设立辅助数组b{if(a[i]<a[j])b[k]=a[i++];elseb[k]=a[j++];}while(i<=e1)while(j<=e2)b[k++]=a[jb{)//{e2=q;求出两个待归并子序列的尾指针);//}voidLinkedList_Merge(LinkedList&L,LNode*p,LNode*e1,LNode*e2)//对链表上的子序列进行归并,p->next到e1,e1->next到e2{q=p->next;r=e1->nextq和r{)//{}{})//{}{}排序,采用链表结{for(p=L->next->next,i=0;p;p=p->next求各有序子序列的尾指针if(!p->next||p->data>p->next->data)end[i++]=p;)//{//{];//if(e1->next)LinkedList_Merge(L,p,e1,e2);//归并end[k++]=e2;用新序列的尾指针取代原来的尾指针j+=2;//转到后面两个子序列}voidLinkedList_Merge(LinkedList&L,LNode*p,LNode*e1,LNode*e2)//对链表上的子序列进行归并,p->next到e1,e1->next到e2{{{}{}{}{}voidSL_Merge(intaintl1,intl2)//l1,l2l1^2<(l1+l2)的两个{//for(i=0;i<l1;ii{for(j=start2;j<l1+l2&&a[j]<a[start1+i];j寻找插入位置k=j-start2;//k为要向右循环移动的位数RSh(a,start1,j-1,k);//将a[start1]a[j-1]之间的子序列循环右移k;//}voidRSh(intaintstart,intend,intk)//a[start]a[end]之间的子序列循k位,5.18{if(len%i==0&&k%i==0p=ilenk{{//}序列,s1个记录,0<=s1<s,s个记录."可是题目voidHash_Sort(inta1000{int++)//{}{{}
typedefstruct
intgt大于该记录的个数intlt}ce;//整个序列中比某个关键字大或小的记录个intGet_Mid(intaintn)//{cefor(i=0;i<n;igtlt{elseif(a[j]<a[i])}if(abs(b[i].gt-b[i].lt)<min_dif)mid=i;returnmid;voidCount_Sort(intaintn)//{int++)//{for(j=0,count=0;j<n;j统计关键字比它小的元素个数if(a[j]<a[i])count++:}++)//{]);//a[i]<->a[minic[min]=INFINITY修改该记录的c}voidEnum_Sort(intaintn)//v到w{intnumber[w+1],pos[w+1];for(i=0;i<n;inumber[a[i计数];//for(i=0;i<n;i构造有序数组c分析:本算法参考了第五章三元组稀疏矩阵转置的算法思想,其中的pos数组和那里的cpot数组起的是相类似的作用.typedefenum{0,1,2,3,4,5,6,7,8,9}digittypedefdigit[3]num;//3位自然数类型,假设低位在低下标,在高下标voidEnum_Radix_Sort(numaintn)//利用计数实现基数排序,3位自然数,n个自然数{intnumber,pos;numc[MAXSIZE];++)//{for(i=0;i<n;inumber[a[i][j计数];//for(i=0;i<
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 集团学院院长面试题(某世界500强集团)题库解析(2026年)
- 公务员考试湖北省武汉市(面试题)模拟题库详解
- 2026年中考生物一轮复习:苏科版(2024)必背知识点提纲
- 压疮护理新进展
- 【2026】年宠物美容师职业技能鉴定题库及解析(附答案与解释)
- 巢湖市2025届三年级数学下学期期中调研试题含解析
- 2026年苏科版(新教材)小学信息技术三年级下册《自主可控护安全》同步练习及答案
- 岳阳市华容县2025届数学三年级下学期期末达标检测试题含解析
- 产科护理中的沟通技巧与患者教育
- 前列腺疾病的心理疏导与支持
- 某市水库扩容工程施工合同三篇
- 四川省德阳市旌阳区2023-2024学年四年级下学期期末检测语文试题
- HG∕T 4214-2011 脲铵氮肥 标准
- 《中医药文献检索》课件
- TSGD7006-2020压力管道监督检验规则
- 广西三支一扶考试试题真题及答案2023
- JC-T 474-2008砂浆混凝土防水剂
- 2023年全国统一高考英语试卷(甲卷)及答案解析
- 2023年06月贵州遵义市播州区选调区外在编在职教师笔试历年高频考点题黑钻摘选附带答案详解析
- 解决铝合金车轮精车划伤问题(物场模型)
- 院前急救检伤分类
评论
0/150
提交评论