noj大作业

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

程序设计挑战式课程设计极限挑战挑战,不是为着征服自然,而是为着突破自我,超越自我

生命有极限,思想无极限,高度有极限,境界无极限

作业名称:

算法演示程序 学 院:

航海学院 班 级:

03011403 学 号:

2013300951 姓 名:

苏和 团队组成:

西北工业大学

2022年4月25日

1、问题与背景(描述程序所要解决的问题或应用背景)

2、开发工具(列出所使用的开发工具和第3方开发库)

3、主要功能(详细说明程序的功能)

4、设计内容(详细描述解决问题的原理和方法、算法、数据结构等)

5、程序文件与工程名称(标出程序中所有文件名、工程名称及其说明)

6、函数模块(程序中各个函数的原型声明及其说明)

7、使用说明(运行程序的小型说明书)

8、程序开发总结(简要叙述编写本作业的收获与思考)

进行了巩固和训练。

9、运行截图(附上程序运行的截图画面,至少有1幅,截图越翔实得分越高)

Windows中抓取当前活动窗口:Alt + Print Screen,抓取全屏:Print Screen。或者使用HyperSnap等软件(百度搜索)。

10、源程序(附上程序源代码,若是多个文件,标出文件名)1.sort.cpp

#include

#include

#include "myh.h"

int main()

{

int a[100],n,i,k;

while(1){

printf("\n\t\t\t 欢迎使用排序算法演示程序\n\n\n");

printf(" 请输入所要排序的数据个数N(N<100)=");

scanf("%d",&n);

printf("\n");

printf(" 请输入所要排序的数据:");

printf("\n\n\t");

for(i=0;i

printf("\n");

printf(" 请选择一种排序方法:\n\n");

printf("\t1.冒泡排序\t 2.选择排序\t 3.插入排序\n");

printf("\t4.快速排序\t 5.堆排序\t 6.归并排序\t 7.基数排序\n\n"); printf(" 您的选择是:");

scanf("%d",&k);

switch(k){

case 1: Bubble(a,n);break;

case 2: Selection(a,n);break;

case 3: Insertion(a,n);break;

case 4: Quick(a,n,0,n-1);break;

case 5: Heap(a,n);break;

case 6: MergeSort(a,0,n-1);break;

case 7: int *a_p = a;Bucket(a_p,n);break;

}

printf("\n");

printf(" 请选择排列方式:1.从小到大 2.从大到小\n\n");

printf(" 您的选择是:");

scanf("%d",&k);

printf("\n\n");

printf(" 结果是:\n\t");

if(k=1){

for(i=0;i

}

else{

for(i=n-1;i>=0;i--) printf("%d ",a[i]);//倒序输出}

printf("\n\n 按Q键并确认退出,其他任意键继续:");

getchar();

if(getchar()=='q') break;

printf("\n\n\n");

}

return 0;

}

2.sort_fun.cpp

#include "myh.h"

#include

#include

void Bubble(int a[],int n){//冒泡排序

int i,j,t;

for(j=0;j

for(i=0;i

if(a[i]>a[i+1]){

t=a[i];

a[i]=a[i+1];

a[i+1]=t;//交换

}

}

void Selection(int a[],int n){//选择排序

int i,j,k,t;

for(i=0;i

k=i;

for(j=i+1;j

if(a[j]

if(i!=k){

t=a[i];

a[i]=a[k];

a[k]=t;//如果不是本身则与相应的a[i]交换}

}

}

void Insertion(int a[],int n){//插入排序

int i,k,t;

for(i=1;i

t=a[i];

k=i-1;

while(t

a[k+1]=a[k];//逐个后移

k--;

if(k==-1)break;

}

a[k+1]=t;//插入原数据

}

}

void Quick(int a[],int n,int left,int right){

//快速排序,left、right分别为数组左右边界int i,j,t;

if(left

相关文档
最新文档