南邮数据结构实验算法分析

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构实验代码南邮实验课实验十各种算法性能比较#include

#include

#include

template

void swap(T &a,T &b)

{

T temp;

temp=a;

a=b;

b=temp;

}

template //选择排序

void SelectSort(T A[],int n)

{

int small;

for(int i=0;i

{ small=i;

for(int j=i+1;j

if(A[j]

swap(A[i],A[small]);

}

}

template //直接插入排序

void InsertSort(T A[],int n)

{

for(int i=1;i

{ int j=i;

T temp=A[i];

while(j>0 && temp

{

A[j]=A[j-1]; j--;

}

A[j]=temp;

}

}

template //冒泡排序

void BubbleSort(T A[],int n)

{

int i,j,last;

i=n-1;

while(i>0)

{

last=0;

for(j=0;j

if(A[j+1]

{

swap(A[j],A[j+1]);

last=j;

}

i=last;

}

}

template //快速排序

void QuickSort(T A[],int n)

{

QSort(A,0,n-1);

}

template

void QSort(T A[],int left,int right)

{

int i,j;

if(left

{ i=left; j=right+1;

do

{

do i++;while(A[i]

do j--;while(A[j]>A[left]);

if(i

}while(i

swap(A[left],A[j]);

QSort(A,left,j-1);

QSort(A,j+1,right);

}

}

template //快速排序(改编)void BQuickSort(T A[],int n)

{

BQSort(A,0,n-1);

}

template

void BQSort(T A[],int left,int right)

{

int i,j;

if(left

{ i=left; j=right+1;

do

{

do i++;while(A[i]

do j--;while(A[j]>A[left]);

if(i

}while(i

swap(A[left],A[j]);

if((j-left)>=10)

BQSort(A,left,j-1);

else

{

InsertSort(A,j-left);

return;

}

if((right-j)>=10)

BQSort(A,j+1,right);

else

{

InsertSort(A,right-j);

return;

}

}

}

template //两路合并排序void Merge(T A[],int i1,int j1,int i2,int j2) {

T *Temp=new T[j2-i1+1];

int i=i1,j=i2,k=0;

while(i

if(A[i]<=A[j]) Temp[k++]=A[i++];

else Temp[k++]=A[j++];

while(i<=j1) Temp[k++]=A[i++];

while(j<=j2) Temp[k++]=A[j++];

for(i=0;i

delete[] Temp;

}

template

void MergeSort(T A[],int n)

{

int i1,j1,i2,j2;

int size=1;

while(size

{

相关文档
最新文档