1 / 11
文档名称:

常见排序算法代码(冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序、堆排序、基数排序).docx

格式:docx   大小:15KB   页数:11页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

常见排序算法代码(冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序、堆排序、基数排序).docx

上传人:aisheng191 2020/3/15 文件大小:15 KB

下载得到文件列表

常见排序算法代码(冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序、堆排序、基数排序).docx

文档介绍

文档介绍://冒泡排序voidBuddleSort(intarray[],intn){inti,j;boolflag=true;for(i=1;flag&&i<n;i++){flag=false;for(j=0;j<n-i;j++){if(array[j]>array[j+1]){flag=true;inttemp=array[j];array[j]=array[j+1];array[j+1]=temp;}}}}//选择法voidSelectSort(intarray[],intn){inti,j,k;for(i=0;i<n;i++){k=i;for(j=i+1;j<n;j++){if(array[j]<array[k]){k=j;}}if(k!=i){inttemp=array[k];array[k]=array[i];array[i]=temp;}}}//插入排序voidInsertSort(intarray[],intn){inti,j,temp;for(i=1;i<n;i++){temp=array[i];j=i-1;while(j>=0&&array[j]>temp){array[j+1]=array[j];j--;}array[j+1]=temp;}}//快速排序voidQSort(intarray[],intl,intr){inti=l,j=r;inttemp=array[l];while(i<j){while(i<j&&temp<array[j]){j--;}if(i<j){array[i]=array[j];i++;}while(i<j&&temp>array[i]){i++;}if(i<j){array[j]=array[i];j--;}array[i]=temp;}if(l<i){QSort(array,l,i-1);}if(j<r){QSort(array,j+1,r);}}//希尔排序voidShellSort(intarray[],intn){inti,j,d=n;while(d!=1){d=(d+1)/2;for(i=d;i<n;i++){inttemp=array[i];j=i-d;while(j>=0&&array[j]>temp){array[j+d]=array[j];j-=d;}array[j+d]=temp;}}}//堆排序voidAdjustHeap(intarray[],inti,intn){intj=2*i,temp;while(j<=n){if(j<n&&array[j-1]<array[j]){j+=1;}if(array[i-1]<array[j-1]){temp=array[i-1];array[i-1]=array[j-1];array[j-1]=temp;=j;=2*i;}else{break;}}}voidHeapSort(intarray[],intn){inti,temp;//将初始无序数转为小根堆for(i=n/2;i>0;i--){AdjustHeap(array,i,n);}//进行n-1趟排序for(i=n;i>1;i--){temp=array[0];array[0]=array[i-1];array[i-1]=temp;AdjustHeap(array,1,i-1);}}//归并排序#include<>voidMerge(intarray[],intp,intq,intr){intn1=q-p+1;intn2=r-q;int*L,*R,i,j,k;L=newint[n1+1];R=newint[n2+1];for(i=0;i<n1;i++)L[i]=array[p+i];for(i=0;i<n2;i++)R[i]=array[q+1+i];L[n1]=INT_MAX;R[n2]=INT_MAX;for(i=0,j=0,k=p;k<=r;k++){if(L[i]<=R[j]){array[k]=L[i++];}else{array[k]=R[j++];}}delete[]L;delete[]R;}voidMergeSort(intarray[],intp,intr){if(p<r){intq=(p+r)/2;MergeSort(array,p,q);MergeSort(array,q+1,r);Merge(array,p,q,r);}else{return;}}//基数排序#defineNUM10voidRadixSort(intArray[],intn,intD){inti,j,k,l=1,d=0;//分配中间存储空间int**ppArr=newint*[NUM];for(i=0;i<NUM;i++){ppArr[i]=newint[n];}i