📄 d7r6.cpp
字号:
#include "iostream.h"
#include "fstream.h"
#include "stdlib.h"
void indexx(int n, double arrin[], int indx[])
{
int i,j,l,ir,indxt;
double q;
for (j = 1; j<=n; j++)
{
indx[j] = j;
}
if (n == 1)
{
return;
}
l = int(n / 2 + 1);
ir = n;
do
{
if (l > 1)
{
l = l - 1;
indxt = indx[l];
q = arrin[indxt];
}
else
{
indxt = indx[ir];
q = arrin[indxt];
indx[ir] = indx[1];
ir = ir - 1;
if (ir == 1)
{
indx[1] = indxt;
return;
}
}
i = l;
j = l + l;
while (j <= ir)
{
if (j < ir)
{
if (arrin[indx[j]] < arrin[indx[j + 1]])
{
j = j + 1;
}
}
if (q < arrin[indx[j]])
{
indx[i] = indx[j];
i = j;
j = j + j;
}
else
{
j = ir + 1;
}
}
indx[i] = indxt;
}while(1);
}
void main()
{
//program d7r6
//driver for routine indexx
double a[101];
int indx[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();
//generate index for sorted array
indexx(100, a, indx);
//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;
}
//print sorted array
cout<<endl;
cout<<"Sorted array:"<<endl;
for (i = 1; i<=10; i++)
{
for (j = 1; j<=10; j++)
{
cout.width(7);
cout.setf(ios::left);
cout<<a[indx[10 * (i - 1) + j]];
}
cout<<endl;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -