head.h
#include<iostream>
using namespace std;
#define MAXSIZE 100
#define LT(a,b) a<b
typedef int KeyType;
typedef int InfoType;
typedef struct{
KeyType key;
InfoType otherinfo;
}RedType;
typedef struct{
RedType r[MAXSIZE+1];
int length;
}SqList;
void BInsertSort(SqList &L);
void ShowList(SqList &L);
function.cpp
#include"head.h"
#include<iostream>
using namespace std;
void BInsertSort(SqList &L)
{
for(int i=2;i<=L.length;i++)
{
int low=1;
int high=i-1;
int m;
L.r[0].key=L.r[i].key;
while(low<=high)
{
m=(low+high)/2;
if(LT(L.r[0].key,L.r[m].key))
high=m-1;
else
low=m+1;
}
for(int j=i-1;j>=high+1;j--)
L.r[j+1].key=L.r[j].key;
L.r[high+1].key=L.r[0].key;
}
}
void ShowList(SqList &L)
{
for(int i=1;i<=L.length;i++)
cout<<L.r[i].key<<" ";
}
main.cpp
#include"head.h"
#include<iostream>
using namespace std;
void main()
{
SqList L;
int n;
cout<<"请输入一组数据的个数:"<<endl;
cin>>n;
cout<<"请输入这"<<n<<"个数据"<<endl;
for(int i=1;i<=n;i++)
{
cin>>L.r[i].key;
}
L.length=n;
BInsertSort(L);
ShowList(L);
}