排序汇总
程序员文章站
2022-05-23 11:01:29
...
今天将之前学习的各种排序方法回顾重写了一遍,感觉还是代码写的太少了,要时刻提醒自己大神还是要代码敲出来的,将今天写的代码留在这吧,感觉过段时间会生疏,还要在来看看然后再敲几遍,简单的就没有注释了,针对自己开始疑惑的地方有注释,欢迎大家指点,直接上代码吧。
int HalfInsert(int *p,int b,int e,int data)//折半插入
{
if(b>e)
return -1;
int m=b+(e-b)/2;
int te=e;
while(b<=te)
{
if(data<p[m])
te=m-1;
else if(data>p[m])
b=m+1;
else
{
b=m;
break;
}
m=b+(te-b)/2;
}
//b就是要插入的位置
for(int i=e;i>=b;--i)
{
p[i+1]=p[i];
}
p[b]=data;
return b;
}
void InsertionSort(int *p,int len)//插入排序,调用折半插入
{
//从数组第二个数据开始做插入排序,第一个数据单独的不用排序
for(int i=1;i<len;++i)
{
HalfInsert(p,0,i-1,p[i]);
}
//p[1] 是在p[0]p[0]间做插入
//p[2] 是在p[0]p[1]间做插入
}
void QuickSort(int *p,int b,int e)//快排
{
if(b>e)
return;
int key=b;
for(int i=b+1;i<=e;++i)
{
if(p[i]<p[b])
{
++key;
if(key!=i)//排除相对于p[b]的第一个数与p[b]交换的情况
{
int t = p[i];
p[i] = p[key];
p[key] = t;
}
}
}
if(key!=b)
{
int t = p[b];
p[b] = p[key];
p[key] = t;
}
QuickSort(p,b,key-1);
QuickSort(p,key+1,e);
}
void MergeSort(int *p,int b,int e,int*help)//归并排序
{
if(b>=e)
return;
int m=b+(e-b)/2;//数组划分点
int index_L=b;//左部分起点
int index_R=m+1;//右部分起点
int index_help=b;//帮助数组起点
MergeSort(p,index_L,m,help);
MergeSort(p,index_R,e,help);
while(index_L<=m&&index_R<=e)
{
if(p[index_L]<p[index_R])
help[index_help++]=p[index_L++];
else
help[index_help++]=p[index_R++];
}
if(index_L>m)
{
while(index_R<=e)
{
help[index_help++]=p[index_R++];
}
}
else
{
while(index_L<=m)
{
help[index_help++]=p[index_L++];
}
}
for(int i=b;i<=e;++i)
{
p[i]=help[i];
}
}
void SeleteSort(int *p,int len)//选择排序
{
for(int i=0;i<len-1;++i)
{
int k=i;
for(int j=i+1;j<len;++j)
{
if(p[k]<p[j])
k=j;
}
if(k!=i)
{
int temp=p[k];
p[k]=p[i];
p[i]=temp;
}
}
}
void BubbleSort(int *p,int len)//冒泡排序
{
for(int i=0;i<len-1;++i)
{
for(int j=0;j<len-i-1;++j)
{
if(p[j]>p[j+1])
{
int temp=p[j];
p[j]=p[j+1];
p[j+1]=temp;
}
}
}
}
上一篇: 二分查找 BinarySearch
下一篇: 排序算法的比较
推荐阅读
-
2021艾瑞深全国高校排名汇总-艾瑞深大学排名2021(最全完整版)
-
校友会中国大学排名前100名(2021年最新完整版名单汇总)
-
400到450分理科大学名单汇总:400~450分理科能上什么大学(2021参考)
-
2021双非大学200强排行榜名单(校友会版)-2021全国双非大学名单排名汇总
-
江苏独立学院转设官方消息(2021年最新汇总):江苏独立学院转公办大学的有几所?
-
2021文科上二本最低多少分能上?附2020年文科二本录取分数线汇总名单
-
河南450一500分的理科大学名单汇总(2021年最新整理)
-
迅雷7.9.38.4978正式版发布下载 新功能汇总
-
修复蓝屏崩溃!NVIDIA 364.51Beta版修复驱动下载地址汇总
-
汇总整理MYSQL相关操作命令