#define Maxsize 300
#include <iostream>
#include <fstream>
using namespace std;
int a[Maxsize];
int num=0;//数字个数
//从文件中读取数据
void Get()
{
fstream file;
file.open("data.txt",ios::in);
if(!file.good())
{
exit(1);
}
file>>num;
for(int i=1;i<=num;i++)
{
file>>a[i];
}//留a[0]做临时空间
file.close();
}
void Print()
{
for(int i=1;i<=num;i++)
{
cout<<a[i]<<' ';
}
cout<<endl;
}
//直接插入排序
void InsertSort()
{
for(int i=2;i<=num;i++)
{
a[0]=a[i];
int j=i-1;
for(j=i-1;a[j]>a[0]&&j>=1;j--)
{
a[j+1]=a[j];
}
a[j+1]=a[0];
}
Print();
}
//希尔排序
void ShellSort()
{
int Dist[3]={9,5,1};
for(int t=0;t<3;t++)
{
int d=Dist[t];
for(int i=d+1;i<=num;i+=d)
{
a[0]=a[i];
int j=i-d;
for(j=i-d;j>=1&&a[j]>a[0];j-=d)
{
a[j+d]=a[j];
}
a[j+d]=a[0];
}
}
Print();
}
int main()
{
Get();
Print();
InsertSort();
ShellSort();
return 0;
}
排序之插入排序(直接插入排序+希尔排序)
最新推荐文章于 2024-06-25 11:02:59 发布