几种经典排序Word文件下载.docx
- 文档编号:16136174
- 上传时间:2022-11-20
- 格式:DOCX
- 页数:14
- 大小:233.47KB
几种经典排序Word文件下载.docx
《几种经典排序Word文件下载.docx》由会员分享,可在线阅读,更多相关《几种经典排序Word文件下载.docx(14页珍藏版)》请在冰豆网上搜索。
81,22,73,93,43,14,55,65,28,39
接着再进行一次分配,这次是根据十位数来分配:
114
22228
339
443
555
665
773
881
993
14,22,28,39,43,55,65,73,81,93
这时候整个数列已经排序完毕;
如果排序的对象有三位数以上,则持续进行以上的动作直至最高位数为止。
插入排序:
归并排序:
归并操作(merge),也叫归并算法,指的是将两个已经排序的序列合并成一个序列的操作。
如 设有数列{6,202,100,301,38,8,1}
初始状态:
[6][202][100][301][38][8][1]比较次数
i=1[6202][100301][838][1] 3
i=2[6100202301][1838] 4
i=3 [16838100202301]4
总计:
11次
堆排序:
#include"
stdafx.h"
iostream"
usingnamespacestd;
//所有排序均按从小到大
//显示数组
voidDisplay(inta[],intn)
{
inti;
for(i=1;
i<
=n;
i++)
{
cout<
<
a[i]<
"
"
;
}
cout<
endl;
}
//交换元素
voidswap(int&
a,int&
b)
inttemp;
temp=a;
a=b;
b=temp;
//冒泡排序
voidBubbleSort(inta[],intn)
{
inti,j;
冒泡排序过程:
{
boolexchange=false;
for(j=1;
j<
=n-i;
j++)
if(a[j]>
a[j+1])
{//交换记录
swap(a[j],a[j+1]);
exchange=true;
}
Display(a,10);
if(!
exchange)//exchange若为假说明数组已排序成功
return;
}
}
//简单排序
voidSelectSort(inta[],intn)
简单排序过程:
=n-1;
{
for(j=i+1;
j++)
if(a[j]<
a[i])
{
swap(a[i],a[j]);
}
Display(a,10);
}
//直接插入排序
//在start位开始到end位结束的数组向后移一位,插入数据data
voidMoveStep(inta[],intstart,intend,intdata)
for(i=end;
i>
=start;
i--)
a[i+1]=a[i];
a[start]=data;
voidSimpleInsertSort(inta[],intn)
for(i=2;
for(j=1;
=i-1;
if(a[i]<
a[j])
//插入
MoveStep(a,j,i-1,a[i]);
//基数排序
voidBucketSort(inta[],intn)
intm[10][10];
inti,j,k;
//m[i][0]存放桶中个数
基数排序过程:
for(i=0;
=9;
m[i][0]=0;
j=a[i]%10;
m[j][0]=m[j][0]+1;
//桶中个数加
m[j][m[j][0]]=a[i];
//个数位整理数组
k=1;
n;
=m[i][0];
a[k++]=m[i][j];
//m[i][0]存放桶中个数清零
//十位数整理数组
j=a[i]/10;
//归并排序
voidMerge(intA[],intlow,intmid,inthigh)
inti=low;
intj=mid+1;
int*T;
T=(int*)malloc(sizeof(int)*(high));
intk=0;
while(i<
=mid&
&
j<
=high)
if(A[i]<
=A[j])
T[k++]=A[i++];
else
T[k++]=A[j++];
if(i==mid+1)
while(j<
=high)
while(i<
=mid)
for(i=low,k=0;
i<
=high;
i++,k++)
A[i]=T[k];
free(T);
voidMergeSort(inta[],intlow,inthigh)
intmid=0;
if(low<
high)
mid=(low+high)/2;
MergeSort(a,low,mid);
MergeSort(a,mid+1,high);
Merge(a,low,mid,high);
//快速排序
voidQuickSort(inta[],intlow,inthigh)
intj,index;
if(low>
=high)
return;
swap(a[low],a[(low+high)/2]);
index=low;
快速排序过程:
for(j=low+1;
j<
j++)
if(a[j]<
a[low])
swap(a[++index],a[j]);
swap(a[low],a[index]);
QuickSort(a,low,index-1);
QuickSort(a,index+1,high);
//希尔排序
voidMoveStep(inta[],intstart,intend,intdata,intstep)
i=i-step)
a[i+step]=a[i];
//MoveStep(a,i,j-dk,a[j],dk);
voidShellSort(inta[],intn)
int*step,k,i,t,dk,j;
k=n;
step=(int*)malloc(sizeof(int)*(n/2));
i=0;
do
k=k/2;
step[i++]=k;
}while(k>
0);
while(dk=step[i++]>
0)
for(i=1;
for(j=i+dk;
j=j+dk)
{
for(k=i;
k<
=(j-dk);
k=k+dk)
if(a[k]>
{
//插入
MoveStep(a,k,j-dk,a[j],dk);
}
//堆排序
voidmain()
inta[11]={-1,22,1,54,47,9,10,3,2,12,6};
inti;
原数据:
//BubbleSort(a,10);
//cout<
endl<
排序后数据:
//Display(a,10);
//SelectSort(a,10);
//Display
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 经典 排序
![提示](https://static.bdocx.com/images/bang_tan.gif)