数据结构课程设计各种排序算法比较

  • 格式:doc
  • 大小:123.00 KB
  • 文档页数:17

下载文档原格式

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

课程设计

课程:数据结构

题目:排序算法比较

专业班级:

姓名:

学号:

设计时间:

指导教师:

一、设计题目

排序算法比较

二、运行环境(软、硬件环境)

操作系统windows7

运行环境vc6.0

三、算法设计的思想

大架构采用模块化编程的思想,将每个不同的功能分别写成不同的子程序,分别进行封装构成各个小的模块,最后将各个模块组合起来。在每个子程序的编写过程中特事特办面对不同的预想功能采取不同的数据结构不同的算法实现。

总体算法思想为按功能分块,依照预想功能实现顺序拼装。

具体思想请见流程图。

四、流程图

功能流程图

程序编写流程图

算法流程图

五、算法设计分析

程序总体采用模块化设计,程序间通过传参和调用进行有机组合。这样的总体布局将将各个功能隔离开来,每个模块负责每个模块的功能,使得程序的布局简单明了。且子程序只有在被调用时才会运行大大节约系统资源减少了运算时间。同时由于功能的隔离使得程序的扩展性大大提高,无论程序将要任何改动时,都会方便很多。

六、源代码

#include

#include

#include

int a[30000];

int choice;

int choice1;

struct xlx{

int key;

int link;

} aa[30000];

int aaa[300000];

void main1();

/**************************生成随机数函数**********************/

void sjs()

{

int i=0,j,b,h,l;

printf("请输入你所期望的将要生成随机数的取值范围:\n");

printf("最小值(不能为负数):");

scanf("%d",&l);

printf("最大值(无上限):");

scanf("%d",&h);

srand( (int) time(0));

for(j=0;i<30000;j++)

{

b=rand();

if(b>=l&&b<=h)

{

a[i]=b;

aa[i].key=b;

aaa[i]=b;

i++;

}

}

for(i=0;i<30000;i++)

printf("%d ",a[i]);

}

/*************************直接插入排序函数***********************/ void direct(int a[]){

printf("\n现在使用直接插入排序法进行排序:\n");

int i,j,w;

for(i=0;i<30000;i++)

{

for(j=i;j>=0;j--)

{

if(a[j]>=a[j+1])

{

w=a[j];

a[j]=a[j+1];

a[j+1]=w;

}

}

}

}

/*************************冒泡排序函数*************************/ void bubble_sort(int a[])

{

printf("\n下面使用冒泡排序法进行排序:");

int i,j,w;

for(i=0;i<30000;i++)

for(j=0;j<30000-i;j++)

if(a[j]>a[j+1])

{

w=a[j];

a[j]=a[j+1];

a[j+1]=w;

}

}

/*************************选择排序****************************/ void choices_sort(int a[])

{ printf("\n现在使用选择排序法进行排序:\n");

int i,j,k,t;

for(i=0;i<30000;i++)

{

k=i;

for(j=i+1;j<30000;j++)

if(a[k]>a[j])

k=j;

t=a[i];

a[i]=a[k];

a[k]=t;

}

}

/*************************快速排序****************************/ quick(int first,int end,int L[])

{

int left=first,right=end,key;

key=L[first];

while(left

{ while((left=key))

right--;

if(left

L[left++]=L[right];

while((left

left++;