直接插入排序基本算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
直接插入排序基本算法
#include
#include
#include
const int n=100000;
typedef struct{
int key;
}RedType;
typedef struct{
RedType *r; //r[n+1];
int length;
}SqList;
int random();
void InsertSort(SqList &L);
void main()
{ SqList L;
L.r = new RedType[n+1];
L.length=n;
for(int i=1;i<=n;i++)L.r[i].key=random();
long t1,t2;
t1=clock();
InsertSort(L);
t2=clock();
cout<<" 时间: "< } int random() { int A=48271; int M=2147483646; int Q=M/A; int R=M%A; static int x=1; int x1; x1=A*(x%Q)-R*(x/Q); if(x1>=0) x=x1; else x=x1+M; return x; } void InsertSort(SqList &L) //直接插入排序__基本算法: { //对顺序表L作直接插入排序。 for(int i=2;i<=L.length;++i) if((L.r[i].key < L.r[i-1].key) { //"<",需将L.r[i]插入有序子表L.r[0]=L.r[i]; //复制为哨兵 L.r[i]=L.r[i-1]; for(int j=i-2;(L.r[0].key L.r[j+1]=L.r[j]; //记录后移 L.r[j+1]=L.r[0]; //插入到正确位置} }//InsertSort */ 改进1 #include #include #include const int n=100000; typedef struct{ int key; }RedType; typedef struct{ RedType *r; //r[n+1]; int length; }SqList; int random(); void InsertSort(SqList &L); void main() { SqList L; L.r = new RedType[n+1]; L.length=n; for(int i=1;i<=n;i++) L.r[i].key=random(); long t1,t2; t1=clock(); InsertSort(L); t2=clock(); cout<<" 时间: "< } int random() { int A=48271; int M=2147483646; int Q=M/A; int R=M%A; static int x=1; int x1; x1=A*(x%Q)-R*(x/Q); if(x1>=0) x=x1; else x=x1+M; return x; } void InsertSort(SqList &L) //直接插入排序少{ int low,high,m; //对顺序表L作折半插入排序。for(int i=2;i<=L.length;++i) { L.r[0]=L.r[i]; //将L.r[i]暂存到L.r[0] low=1;high=i-1; while(low<=high) { //在r[low..high]中折半查找有序插入的位置m=(low+high)/2; //折半 if (L.r[0].key high=m-1; //插入点在低半区 else low=m+1; //插入点在高半区}//while for(int j=i-1;j>=high+1;--j) L.r[j+1]=L.r[j]; //记录后移L.r[high+1]=L.r[0]; //插入 } //for }//InsertSort 改进2表插入排序 #include #include #include const int n=100000; const int MAXINT=2147483647; typedef struct{ int key; //r[n+1]; int next; }SLNode; typedef struct { SLNode *r; int length; }SLinkList;