直接插入排序基本算法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

相关文档
最新文档