关于排序算法的C++课程设计

  • 格式:doc
  • 大小:62.00 KB
  • 文档页数:5

下载文档原格式

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

河北工业大学计算机软件技术基础(VC)课程设计报告

学院电气学院班级自动化082姓名苟斌学号080989成绩 __ ____一、题目:

排序算法应用二(直接法、插入法、shell排序)(10)

二、设计思路

1、总体设计:

1)要求:将一组无序数列分别通过直接法、插入法、shell排序按一定规律进行排序,并输出排序次数。

2)系统总体结构:

本设计有五个函数和一个头文件组成,五个函数分别为:

主函数(主要负责循环方式选择,和定义)。

赋值函数(对数组进行赋值)。

插入循环函数(完成插入的循环函数制定)。

直接循环循环(完成直接的循环函数制定)。

Shell循环函数(完成Shell的循环函数制定)。

头文件将函数说明与主函数组和。

2、各功能模块的设计:首先设计主函数,再分别设计直接法、插入法、shell排序及赋值函数作为分函数,最后通过头文件将它们与主函数结合,使输入的一组无序数列分别通过直接法、插入法、shell排序按一定规律进行排序,并输出排序次数。从而完成数列的排序和排序方法的比较。

3、设计中的主要困难及解决方案:

困难一:数列的赋值?

解决方法:用函数实现。

困难二:如何进行排序比较?

解决方法:分别通过直接法、插入法、shell排序进行排序,使其按一定规律,并输出次数。

4、你所设计的程序最终完成的功能

1)将一组无序数列通过排序使其成为有序数列。

2)准备的测试数据:2 6 1 8 4 9 5

运行结果:

三、程序清单

本程序包含main.cpp、charu.cpp、zhijie.cpp、shell.cpp、fuzhi.cpp、和paixu.h六个文件

1、main.cpp文件清单

#include //主函数

#include "paixu.h"

void main ()

{

int a[100],b[100],n,o,p,q,i;

char c;

for(int flag=1;flag!=0;)

{

cout<<"请输入数列个数:";

cin>>n;

fuzhi(a,n);

for(i=0;i

b[i]=a[i];

q=shell(a,n); //进入Shell法循环

cout<<"---------------------------";

cout<<"\n使用Shell排序法排序后的数据:"<

for(int y=0;y

cout<

cout<<"\n排序次数为:"<

for(i=0;i

a[i]=b[i];

编号:10

p=zhijie(a,n); //进入直接法循环

cout<<"---------------------------";

cout<<"\n使用直接排序法排序后的数据:"<

for(int w=0;w

cout<

cout<<"\n排序次数为:"<

for(i=0;i

a[i]=b[i];

o=charu(a,n); //进入插入法循环

cout<<"---------------------------";

cout<<"\n使用插入排序法排序后的数据:"<

for(int s=0;s

cout<

cout<<"\n排序次数为:"<

cout<<"是否继续查找?Y/N"<

cin>>c;

if(c=='N'||c=='n')

flag=0; //数据的循环

}

}

2、charu.cpp文件清单

int charu(int a[],int n) //插入循环

{ int i,j,min,temp,o=0;

for(i=0;i

{ min=i;

for(j=i+1;j

{ if(a[j]>a[min])

min=j;

}

if(min!=i) //交换

{

o+=1;

temp=a[min];

a[min]=a[i];

a[i]=temp;

}

}

return o;

}

3、zhijie.cpp文件清单

int zhijie(int a[],int n) //直接循环

{

int t,p=0;

编号:10

for(int i=0;i

for(int j=i+1;j

if (a[j]>a[i]) //比较及交换

{

p+=1;

t=a[j];

a[j]=a[i];

a[i]=t;

}

return p;

}

4、shell.cpp文件清单

int shell(int a[],int n) //shell循环

{

int H,I,t,q=0;

for (H=n/2;H>0;H--)

{

for (I=0;I

{

if (a[I]

{ q+=1;

t=a[I];

a[I]=a[I+H];

a[I+H]=t;

}

}

}

return q;

}

5、fuzhi.cpp文件清单

#include //赋值函数

void fuzhi(int a[],int n)

{ cout<<"请输入"<

for(int i=0;i

{ int j=i+1;

cout<<"现在是第"<

cin>>a[i]; //输入数列

}

}

6、paixu.h文件清单

int shell(int a[],int n); //Shell排序函数说明

int charu(int a[],int n); //插入排序函数说明

int zhijie(int a[],int n); //直接排序函数说明

void fuzhi(int a[],int n); //赋值函数说明