一、直接插入排序
定义顺序表的存储结构
初始化顺序表为空表
输入10个元素创建含有10个元素的顺序表
输出顺序表
对顺序表进行直接插入排序(InsertSort)
输出排序后的顺序表
例如:
11 938 669 507 117 261 708 343 300 602
11 938 669 507 117 261 708 343 300 602
11 117 261 300 343 507 602 669 708 938
#include<iostream>
using namespace std;
# define MAXSIZE 100
typedef struct {
int a;
}ElemType;
typedef struct{
ElemType *elem;
int lengh;
}SqList2;
int InitList(SqList2 &L){
L.elem=new ElemType[MAXSIZE];
if(!L.elem) return 0;
L.lengh=0;
return 1;
}
int CreateList(SqList2 &L,int n){
L.lengh=n;
for(int i=1;i<=L.lengh;i++){
cin>>L.elem[i].a;
}
}
void InsertSort(SqList2 &L){
int i,j;
for(i=2;i<=L.lengh;i++)
if(L.elem[i].a<L.elem[i-1].a){
L.elem[0]=L.elem[i];
L.elem[i]=L.elem[i-1];
for(j=i-2;L.elem[0].a<L.elem[j].a;j--)
L.elem[j+1]=L.elem[j];
L.elem[j+1]= L.elem[0];
}
}
void print(SqList2 L){
for(int i=1;i<=L.lengh;i++){
cout<<L.elem[i].a<<" ";
}
}
int main(){
SqList2 L;
int n;
InitList(L);
cin>>n;
CreateList(L,n);
print(L);
InsertSort(L);
print(L);
}