ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:17.20KB ,
资源ID:24447098      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/24447098.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(排序算法多种算法实现插入 堆 希尔 快排.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

排序算法多种算法实现插入 堆 希尔 快排.docx

1、排序算法多种算法实现插入 堆 希尔 快排#include #include #include /实现简单选择排序、直接插入排序和冒泡排序void SelectSort() int m,t; int a=8,2,4,3,6,n=5; for(int i=0;in;i+) int min=ai; for(int j=i+1;jaj) min=aj; m=j; if(ai!=min) t=ai; ai=am; am=t; /打印 for(i=0;in;i+) printf(%d ,ai); printf(n);/实现简单的数组的插入排序/void inserssort() int x; int a=

2、2,3,4,6,8,n=5; printf(请输入要插入的数据n); scanf(%d,&x); int tem=x; for(int i=0;iaiξj-) aj+1=aj; ai+1=tem; for(i=0;in+1;i+) printf(%d ,ai); printf(n); /实现简单的数组的冒泡排序/void maopao() /冒泡 int a=8,2,4,3,6,n=5; int i,j,temp; for(i=1;in;i+) for(j=0;jaj+1) temp=aj; aj=aj+1; aj+1=temp; for(i=0;i0) for(i=Gap;i=0) i

3、f(ajaj+Gap) temp=aj; aj=aj+Gap; aj+Gap=temp; j=j-Gap; else break; Gap/=2; for(i=0;in;i+) printf(%d ,ai); printf(n);/快速排序实现int partition(int n,int left,int right); /partition函数的声明int m=5; /(自定义简单的数组的长度)void Swap(int *i,int *j) int *temp; temp=i; i=j; j=temp;void quicksort(int n, int left,int right) i

4、nt dp; if (leftright) dp=partition(n,left,right); quicksort(n,left,dp-1); quicksort(n,dp+1,right); /这两个就是递归调用,分别整理53左边的数组和右边的数组 int partition(int n,int left,int right) int lo,hi,pivot,t; pivot=nleft; lo=left-1; hi=right+1; while(lo+1!=hi) if(nlo+1pivot) hi-; else t=nlo+1; n+lo=nhi-1; n-hi=t; nleft=n

5、lo; nlo=pivot; return lo;/堆排序的简单数组实现void HeapAdjust(int array, int i, int nLength) int nChild, nTemp; for (nTemp = arrayi; 2 * i + 1 arraynChild) +nChild; / 如果较大的子结点大于父结点那么把较大的子结点往上移动,替换它的父结点 if (nTemp= 0; -i) HeapAdjust(array, i, length); / 从最后一个元素开始对序列进行调整,不断的缩小调整的范围直到第一个元素 for (i=length - 1; i 0;

6、 -i) / 把第一个元素和当前的最后一个元素交换, / 保证当前的最后一个位置的元素都是在现在的这个序列之中最大的 Swap(&array0, &arrayi); / 不断缩小调整heap的范围,每一次调整完毕保证第一个元素是当前序列的最大值 HeapAdjust(array, 0, i); /输出数组void print(int b) for(int i=0;idata=NULL; p-next=NULL; L=p;void insertlist(linklist &L) linklist p; int as; p=L; printf(请输入链表的的元素,输入以#为结束n); while(

7、scanf(%d,&as)&as!=#) linklist q=(linklist)malloc(sizeof(londe); q-data=as; q-next=NULL; p-next=q; p=q; printf(链表创建成功!n); /链表创建生成完成void printlist(linklist &L) linklist p; p=L-next; while(p) printf(%d ,p-data); p=p-next; printf(n);/链表的排序操作int rtnlegth(linklist &L) /计算双向链表的长度 linklist p; int count=0; p

8、=L-next; while(p) count+; p=p-next; return(count);void listSelectSort(linklist &L) /链表的选择排序 linklist p,q,small; int temp; for(p=L-next;p-next!=NULL;p=p-next) small=p; for(q=p-next;q;q=q-next) if(q-datadata) small=q; if(small!=p) temp=p-data; p-data=small-data; small-data=temp; printf(选择排序结果如下:n); pr

9、intlist(L); printf(n); void insertlistsort(linklist &L) /链表的插入排序 linklist p; int xx; p=L-next; printf(请输入要插入的数据n); scanf(%d,&xx); linklist pp=(linklist)malloc(sizeof(londe); pp-data=xx; if(p-data=xx) pp-next=p; L=p; return; while(p-next) if(xx=p-data&p-next-data=xx) pp-next=p-next-next; p-next=pp; r

10、eturn; printf(插入排序结果如下:n); printlist(L); printf(n);void maopao(linklist &L) /链表的冒泡排序 linklist p; int tem; for(int i=1;inext; for(int j=0;jdata=p-next-data) tem=p-data; p-data=p-next-data; p-next-data=tem; p=p-next; printf(冒泡排序结果如下:n); printlist(L); printf(n);int main() int mm,nn; int b=8,2,4,3,6; li

11、nklist L; printf(请选择菜单:*n); printf(1:实现简单选择排序、直接插入排序和冒泡排序n); printf(2:实现希尔排序算法*n); printf(3:实现快速排序算法*n); printf(4:实现堆排序算法*n); printf(采用链式存储实现简单选择排序、直接插入排序和冒泡排序n); printf(5:创建一个链表输出并:*n); printf(6:链表选择排序:*n); printf(7:链表插入排序:*n); printf(8:链表冒泡排序:*n); printf(n); while(scanf(%d,&mm)!=EOF) switch(mm) ca

12、se 1: printf(1:选择排序n); printf(2:插入排序n); printf(3:冒泡排序n); while(scanf(%d,&nn)!=EOF) switch(nn) case 1: SelectSort(); break; case 2: inserssort(); break; case 3: maopao(); break; break; printf(n); break; case 2: shellsort(); printf(n); break; case 3: quicksort(b,0,4); printf(快速排序为n); print(b); break;

13、case 4: printf(堆排序为n); HeapAdjust(b,1,5); print(b); break; case 5: createlist(L); insertlist(L); break; case 6: listSelectSort(L); break; case 7: insertlistsort(L); break; case 8: maopao(L); break; printf(n); printf(1:实现简单选择排序、直接插入排序和冒泡排序n); printf(2:实现希尔排序算法*n); printf(3:实现快速排序算法*n); printf(4:实现堆排序算法*n); printf(采用链式存储实现简单选择排序、直接插入排序和冒泡排序n); printf(5:创建一个链表输出并:*n); printf(6:链表选择排序:*n); printf(7:链表插入排序:*n); printf(8:链表冒泡排序:*n); printf(n); return 0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1