四种排序算法(起泡排序、直接插入排序、简单选择排序、快速排序)源程序

上传人:m**** 文档编号:127993950 上传时间:2022-07-31 格式:DOC 页数:5 大小:39KB
返回 下载 相关 举报
四种排序算法(起泡排序、直接插入排序、简单选择排序、快速排序)源程序_第1页
第1页 / 共5页
四种排序算法(起泡排序、直接插入排序、简单选择排序、快速排序)源程序_第2页
第2页 / 共5页
四种排序算法(起泡排序、直接插入排序、简单选择排序、快速排序)源程序_第3页
第3页 / 共5页
亲,该文档总共5页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
#include viostream using namespace std;struct RecordNodeint key;排序码字段int value; 记录的其他字段;struct SortObjectint n;n为文件中的记录个数RecordNode *record;输入待排序的记录关键码void InputData(SortObject *pvector)coutvv输入待排序的vvpvectorO-nvv个记录关键码:; int i;for(i=O;ivpvectorO-n;i+)cinpvectorO-recordi.key;for(int j=l;jv4;+j)pvectorj-recordi.key=pvector0-recordi.key;输出排序表void OutputData(SortObject *pvector)coutvv当前排序表为:;for(int i=0;ivpvector-n;i+)coutvvpvector-recordi.keyvv;coutvvendl;/起泡排序:void bubbleSort(SortObject * pvector,int &n,int &m)n=0,m=0; n为排序码比较次数,m为元素移动次数:int i, j, noswap;RecordNode temp;for(i=0; ivpvector-n-1; i+)/ 做 n-1 次起泡noswap=l;for(j=0; jvpvector-n-i-l; j+) 置交换标志n+;if(pvector-recordj+1.keyvpvector-recordj.key) 从前向后扫描 temp=pvector-recordj;/ 交换记录pvector-recordj=pvector-recordj+1;pvector-recordj+1=temp;noswap=0;m+;if(noswap) break;/本趟起泡未发生记录交换,算法结束coutvv起泡排序法:;coutvv排序码比较次数:vvnvv元素移动次数:vvmvv; OutputData(pvector);直接插入排序:void InsSort(SortObject * pvector,int &n,int &m)n=0,m=0;RecordNode temp;int i,j;for( i=1;in;+i)if(pvector-recordi.keyrecordi-1.key)temp=pvector-recordi;for(j=i-1;temp.keyrecordj.ke y& &j-1;-j)pvector-recordj+1=pvector-recordj;m+;n+;pvector-recordj+1=temp;n+;m+;n+;coutvv直接插入排序:;coutvv排序码比较次数:vvnvv元素移动次数:vvmvv;OutputData(pvector);简单选择排序:void SelectSort(SortObject * pvector,int &n,int &m)n=0,m=0;int i,j,k;for ( i=0 ; ivpvector- n; +i)k=i;for ( j=i+1 ; j n ; +j)if (pvector-recordj.key recordk.key ) k=j;n+;if ( k!=i)RecordNode x;x= pvector-recordi;pvector-recordi= pvector-recordk;pvector-recordk=x;m+;coutvv简单选择排序:;coutvv排序码比较次数:vvnvv元素移动次数:vvmvvOutputData(pvector);快速排序:void quitsort(SortObject * pvector,int s,int e,int &n,int &m) int l=s,r=e;RecordNode x=pvector-records;if(lr) return;while(lvr)while(lrecordr.key=x.key)r-;n+; pvector-recordl=pvector-recordr;while(lvr& pvector-recordl.keyv=x.key)l+;n+; pvector-recordr=pvector-recordl;m+;pvector-recordl.key=x.key;quitsort(pvector,s,r-l,n,m); quitsort(pvector,r+l,e,n,m);void quitsort_prin(SortObject * pvector,int &n,int &m)n=0,m=0;quitsort(pvector,0,pvector-n-1,n,m);coutvv”快速排序:;coutvv排序码比较次数:vvnvv元素移动次数:vvmvv OutputData(pvector); void Showout(int nn,int mm)SortObject *pvector4;int i,n;for(i=0;iv4;+i)pvectori=new SortObject;coutvv输入排序表的长度:;cinn;for(i=0;in=n; pvectori-record=new RecordNoden;InputData(pvector); bubbleSort(pvectorO,nnO,mmO);InsSort(pvector1,nn1,mm1);SelectSort(pvector2,nn2,mm2);quitsort_prin(pvector3,nn3,mm3);测试程序void main()j . _ff 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 11T Tcoutvv*vvendi;coutvv 欢迎进入排序页面!vvendl;j . _ff 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 11T Tcoutvv*vvendi;int n4=0;int m4=0;int i;for(i=0;iv5;+i)coutvv第vvi+lvv,组排序如下:vvendl;Showout(n,m);int n_min=0;int m_min=0;for(int j=1;jv4;+j)if(njvnn_min)n_min=j;if(mjvmm_min)m_min=j;coutvv这次排序中,排序码比较次数最少的是第vvn_min+1vv种排序方法.vvendl;coutvv这次排序中,元素移动的次数最少的是第vvm_min+1vv种排序方法.vvendl;coutvvendl;j . _ff 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 11T Tcoutvv*vvendi*coutvv 排 序结束,谢谢 使用! vvendl;j . _ff 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 11T Tcoutvv*vvendl*
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 模板表格


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!