C++各种内排序算法的实现及性能比较如何实现?

2020-06-21 科技 114阅读
#include
using namespace std;
//插入排序--直接插入排序
void insert_sort(int v[],int lenth)
{
int i,j;
for(i=1;i {
int tem = v[i];
for(j=i-1;j>=0&&tem v[j+1] = v[j];
v[j+1] = tem;
}
}
//插入排序--shell(希尔)排序(快速插入排序)
void shell(int v[],int lenth)//在直接插入排序的基础上分段做插入排序
{
int i,j,step;
for(step=lenth/2;step>=1;step=step/2)
{
for(i=step;i {
int tem = v[i];
for(j=i-step;j>=0&&tem v[j+step] = v[j];
v[j+step] = tem;
}
}
}
//交换排序--泡沫排序
void bubble(int v[],int lenth)
{
int i,j;
for(i=1;i for(j=lenth-1;j>=i;j--)//从后向前,一次排序后较小的被排在前面
if(v[j] {
int tem = v[j-1];
v[j-1] = v[j];
v[j] = tem;
}
}
//交换排序--快速排序
int partition(int v[],int low,int high)//一种分段方法
{
int i=low,j=high;
int tem = v[low];
while(i {
while(i=tem)
j--;
if(i {
v[i++] = v[j];
}
while(i i++;
if(i {
v[j--] = v[i];
}
}
v[i] =tem;
return i;
}
void quicksort(int v[],int low,int high)
{
int point;
if(low {
point = partition(v,low,high);
quicksort(v,low,point-1);
quicksort(v,point+1,high);
}
}
//选择排序--直接选择排序
void select(int v[],int lenth)
{
int i,j;
int tem_data;
int tem_i;
for(i=0;i {
tem_data = v[i];
tem_i = i;
for(j=i+1;j if(v[j] {
tem_data = v[j];
tem_i = j;
}
if(i!=tem_i)
{
v[tem_i] = v[i];
v[i] = tem_data;
}
}
}
void show(int v[],int lenth)
{
int i;
for(i=0;i<10;i++)
cout<}
int main(void)
{
int a[10] = {10,49,38,65,97,76,3,49,27,1};
cout< insert_sort(a,10);
show(a,10);
int b[10] = {10,49,38,65,97,76,3,49,27,1};
cout< shell(b,10);
show(b,10);
int c[10] = {10,49,38,65,97,76,3,49,27,1};
cout< bubble(c,10);
show(c,10);
int d[10] = {10,49,38,65,97,76,3,49,27,1};
cout< quicksort(d,0,9);
show(d,10);
int e[10] = {10,49,38,65,97,76,3,49,27,1};
cout< select(e,10);
show(e,10);
}
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com