欢迎来到天天文库
浏览记录
ID:53874322
大小:185.50 KB
页数:28页
时间:2020-04-10
《常用算法模板库(C++).doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1排序算法1.1冒泡排序/*函数功能:对数组中的某一部分进行冒泡排序。函数原形:voidBubSort(DataTypea[],intl,intr,boolUp=true);参数:DataTypea[]:欲排序的数组;intl:有序序列在数组中的起始位置;intr:有序序列在数组中的结束位置;boolUp:true按升序排列,false按降序排列。返回值:无。备注:无。*/templatevoidBubSort(DataTypea[],intl,intr,boolUp=true)
2、{inti,j;DataTypek;if(Up){for(i=l;i<=r-1;i++)for(j=r;j>=i+1;j--)if(a[j-1]>a[j]){k=a[j-1];a[j-1]=a[j];a[j]=k;}}elsefor(i=l;i<=r-1;i++)for(j=r;j>=i+1;j--)if(a[j-1]3、ntl,intr,boolUp=true);参数:DataTypea[]:欲排序的数组;intl:有序序列在数组中的起始位置;intr:有序序列在数组中的结束位置;boolUp:true按升序排列,false按降序排列。返回值:无。备注:无。*//*普通版*/templatevoidSelectSort(DataTypea[],intl,intr,boolUp=true){inti,j;DataTypek;if(Up){for(i=l;i<=r-1;i++)for(j=i+1;j4、<=r;j++)if(a[i]>a[j]){k=a[i];a[i]=a[j];a[j]=k;}28}elsefor(i=l;i<=r-1;i++)for(j=i+1;j<=r;j++)if(a[i]voidSelectSort(DataTypea[],intl,intr,boolUp=true){inti,j,k;DataTypex;if(Up){for(i=l;i<=r-1;i++)5、{k=i;for(j=i+1;j<=r;j++)if(a[j]a[k])k=j;x=a[i];a[i]=a[k];a[k]=x;}}1.3插入排序/*函数功能:向有序数组中插如元素,并使插入新元素后仍然有序。函数原形:voidInsertSort(DataTypes[],int&Count,DataTypex,boolUp=true);6、参数:DataTypes[]:欲插入元素的有序序列;int&Count:有序序列中现有元素个数;DataTypex:欲插入的元素;boolUp:true按升序排列,false按降序排列。返回值:无。备注:无。*/templatevoidInsertSort(DataTypes[],int&Count,DataTypex,boolUp=true){inti,k=-1;if(Up){for(i=0;i<=Count-1;i++)if(x7、or(i=0;i<=Count-1;i++)if(x>s[i]){k=i;break;}28if(k==-1)s[++Count-1]=x;else{for(i=Count-1;i>=k;i--)s[i+1]=s[i];s[k]=x;Count++;}}1.4快速排序/*函数功能:对数组中的某一部分进行快速排序。函数原形:voidQuickSort(DataTypea[],intl,intr,boolUp=true);参数:DataTypea[]:欲排序的数组;intl:有序序列在数组中的起始位置;intr:有序序8、列在数组中的结束位置;boolUp:true按升序排列,false按降序排列。返回值:无。备注:无。*/templatevoidQuickSort(DataTypea[],intl,intr,boolUp=true){inti,j;DataTypeMid,k;i=l;j=r;Mid=a[(l+r)/2];if(Up){do
3、ntl,intr,boolUp=true);参数:DataTypea[]:欲排序的数组;intl:有序序列在数组中的起始位置;intr:有序序列在数组中的结束位置;boolUp:true按升序排列,false按降序排列。返回值:无。备注:无。*//*普通版*/templatevoidSelectSort(DataTypea[],intl,intr,boolUp=true){inti,j;DataTypek;if(Up){for(i=l;i<=r-1;i++)for(j=i+1;j
4、<=r;j++)if(a[i]>a[j]){k=a[i];a[i]=a[j];a[j]=k;}28}elsefor(i=l;i<=r-1;i++)for(j=i+1;j<=r;j++)if(a[i]voidSelectSort(DataTypea[],intl,intr,boolUp=true){inti,j,k;DataTypex;if(Up){for(i=l;i<=r-1;i++)
5、{k=i;for(j=i+1;j<=r;j++)if(a[j]a[k])k=j;x=a[i];a[i]=a[k];a[k]=x;}}1.3插入排序/*函数功能:向有序数组中插如元素,并使插入新元素后仍然有序。函数原形:voidInsertSort(DataTypes[],int&Count,DataTypex,boolUp=true);
6、参数:DataTypes[]:欲插入元素的有序序列;int&Count:有序序列中现有元素个数;DataTypex:欲插入的元素;boolUp:true按升序排列,false按降序排列。返回值:无。备注:无。*/templatevoidInsertSort(DataTypes[],int&Count,DataTypex,boolUp=true){inti,k=-1;if(Up){for(i=0;i<=Count-1;i++)if(x7、or(i=0;i<=Count-1;i++)if(x>s[i]){k=i;break;}28if(k==-1)s[++Count-1]=x;else{for(i=Count-1;i>=k;i--)s[i+1]=s[i];s[k]=x;Count++;}}1.4快速排序/*函数功能:对数组中的某一部分进行快速排序。函数原形:voidQuickSort(DataTypea[],intl,intr,boolUp=true);参数:DataTypea[]:欲排序的数组;intl:有序序列在数组中的起始位置;intr:有序序8、列在数组中的结束位置;boolUp:true按升序排列,false按降序排列。返回值:无。备注:无。*/templatevoidQuickSort(DataTypea[],intl,intr,boolUp=true){inti,j;DataTypeMid,k;i=l;j=r;Mid=a[(l+r)/2];if(Up){do
7、or(i=0;i<=Count-1;i++)if(x>s[i]){k=i;break;}28if(k==-1)s[++Count-1]=x;else{for(i=Count-1;i>=k;i--)s[i+1]=s[i];s[k]=x;Count++;}}1.4快速排序/*函数功能:对数组中的某一部分进行快速排序。函数原形:voidQuickSort(DataTypea[],intl,intr,boolUp=true);参数:DataTypea[]:欲排序的数组;intl:有序序列在数组中的起始位置;intr:有序序
8、列在数组中的结束位置;boolUp:true按升序排列,false按降序排列。返回值:无。备注:无。*/templatevoidQuickSort(DataTypea[],intl,intr,boolUp=true){inti,j;DataTypeMid,k;i=l;j=r;Mid=a[(l+r)/2];if(Up){do
此文档下载收益归作者所有