帮我看看这个程序有什么错误

来源:百度知道 编辑:UC知道 时间:2024/05/28 18:10:45
#include<iostream.h>
#include<time.h>
#include<stdlib.h>

typedef int KeyType;
struct DataType
{
KeyType key;
};
int p=0;
int x=0;
int compare,move;

void InsertSort(DataType a[],int n)
{
int i,j;
DataType temp;
for(i=0;i<n-1;i++)
{
temp=a[i+1];
j=i;
while(j>-1&&temp.key<=a[j].key)
{
p++;
a[j+1]=a[j];
j--;
}
a[j+1]=temp;
}
compare=p+n-1;
move=(n-1)*2+p;
}

void ShellSort(DataType a[],int n,int d[],int numOfD)
{
int i,j,k,m,span;
DataType temp;
for(m=0;m<numOfD;m++)
{
span=d[m];
for(k=0;k<span;k++)
{
for(i=k;i<n-span;i=i+span)
{
temp=a[i+span];
j=i;
whi

头文件下加一个命名空间 using namespace std;
错误在下面:已经改好。
for(int m=0;m<1000;m++)
{
test[m].key=rand();
}
为使输出比较比较好看,我把你的数处代码改下:
InsertSort(test,n);
cout<<"用直接插入排序排序后的结果为:"<<endl;
for(int z=0;z<n;z++)
cout<<test[z].key<<" ";
cout<<endl;
cout<<"用直接插入排序比较次数为:"<<compare<<endl;
cout<<"用直接插入排序移动次数为:"<<move<<endl;
ShellSort(test,n,a,6);
cout<<"用希尔排序后的结果为:"<<endl;
for(int c=0;c<n;c++)
cout<<test[c].key<<" ";
cout<<endl;
cout<<"用希尔排序比较次数为:"<<compare<<endl;
cout<<"用希尔排序移动次数为:"<<move<<endl;
return 0;