📄 d7r3.cpp
字号:
#include "iostream.h"
#include "fstream.h"
#include "math.h"
#include "stdlib.h"
void shell(int n, double arr[])
{
double t,aln2i = 1.442695;
double tiny = 0.00001;
int nn,k,l,m,j,i,lognb2,done;
lognb2= int(log(double(n)) * aln2i + tiny);
m = n;
for (nn = 1; nn<=lognb2; nn++)
{
m = int(m / 2);
k = n - m;
for (j = 1; j<=k; j++)
{
i = j;
do
{
done = -1;
l = i + m;
if (arr[l] < arr[i])
{
t = arr[i];
arr[i] = arr[l];
arr[l] = t;
i = i - m;
if (i >= 1)
{
done = 0;
}
}
}while(!done);
}
}
}
void main()
{
//program d7r3
//driver for routine shell
double a[101];
int i,j;
ifstream fin;
fin.open("d:\\vc常用数值算法集\\data\\tarray.dat",ios::in|ios::nocreate);
if (!fin)
{
cerr<<"could not open d:\\vc常用数值算法集\\data\\tarray.dat"<<endl;
exit(1);
}
for (i=1; i<=100; i++)
{
fin>>a[i];
}
fin.close();
//print original array
cout<<"Original array:"<<endl;
cout<<endl;
for (i = 1; i<=10; i++)
{
for (j = 1; j<=10; j++)
{
cout.width(7);
cout.setf(ios::left);
cout<<a[10 * (i - 1) + j];
}
cout<<endl;
}
//sort array
shell(100, a);
//print sorted array
cout<<endl;
cout<<"Sorted array:"<<endl;
cout<<endl;
for (i = 1; i<=10; i++)
{
for (j = 1; j<=10; j++)
{
cout.width(7);
cout.setf(ios::left);
cout<<a[10 * (i - 1) + j];
}
cout<<endl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -