直接插入排序
//有点问题
#include <iostream>
using namespace std;
#define MAXSIZE 20
struct SqList
{
int r[MAXSIZE+1];
int length;
};
void Initial(SqList &SL,int num[],int len)
{
for(int i = 0; i < len; i++)
SL.r[i] = num[i];
SL.length = len;
}
void Print(SqList &SL)
{
for(int i = 0; i < SL.length; i++)
cout<<SL.r[i]<<" ";
cout<<endl;
}
void InsertSort(SqList &SL) //直接插入排序
{
int temp;
for(int i = 1; i < SL.length; i++)
if(SL.r[i]<SL.r[i-1])
{
temp = SL.r[i];
for(int j = i-1; (temp < SL.r[j]) && (j == 0); j--)
SL.r[j+1] = SL.r[j];
SL.r[j+1] = temp;
}
}
int main()
{
SqList SL;
int num[]={49, 38, 65, 97, 76, 13, 27, 49};
Initial(SL,num,8);
cout<<"原来的数据: ";
Print(SL);
Initial(SL,num,8);
InsertSort(SL);
cout<<"直接插入排序: ";
Print(SL);
return 0;
}
问题点数:20、回复次数:2Top
1 楼junhao_666()回复于 2006-02-24 20:22:34 得分 20
#include <iostream>
using namespace std;
#define MAXSIZE 20
struct SqList
{
int r[MAXSIZE+1];
int length;
};
void Initial(SqList &SL,int num[],int len)
{
for(int i = 0; i < len; i++)
SL.r[i] = num[i];
SL.length = len;
}
void Print(SqList &SL)
{
for(int i = 0; i < SL.length; i++)
cout<<SL.r[i]<<" ";
cout<<endl;
}
void InsertSort(SqList &SL) //直接插入排序
{
int temp;
for(int i = 0; i < SL.length; i++)
if(SL.r[i]<SL.r[i-1])
{
temp = SL.r[i];
for(int j = i-1; (temp < SL.r[j]) && (j>= 0); j--)//这里的循环条件
SL.r[j+1] = SL.r[j];
SL.r[j+1] = temp;
}
}
int main()
{
SqList SL;
int num[]={49, 38, 65, 97, 76, 13, 27, 49};
Initial(SL,num,8);
cout<<"原来的数据: ";
Print(SL);
Initial(SL,num,8);
InsertSort(SL);
cout<<"直接插入排序: ";
Print(SL);
return 0;
}
Top
2 楼yesiloveyou(下意识的弯了一下腰,TMD,踩狗屎了)回复于 2006-02-24 20:57:23 得分 0
thanksTop




