您好,欢迎来到好土汽车网。
搜索
您的当前位置:首页数据结构课程设计

数据结构课程设计

来源:好土汽车网


课 程 设 计 说 明 书 课程名称:设计题目:院 系:学生姓名:学 号:专业班级:指导教师: 数据结构和算法 多种排序 计算机科学与信息工程学院 计科嵌入式(12-1)

年 月 日

课 程 设 计 任 务 书

设计题目 学生姓名 设计要求: 表达式计算程序设计 所在院系 计科 专业、年级、班 12计科(嵌入式) 1) 采用如下七种方法实现上述问题求解:插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序。 2) 统计每一种排序方法的性能(以上机运行程序所花费的时间为准进行对比),找出其中两种较快的方法。并将数据序列和不同的查找算法的性能结果记录入txt文件。 学生应完成的工作: 1. 利用随机函数产生N个随机整数(10000以上)。 2. 对这些数字进行排序。 3. 采用插入、希尔、起泡、快速、选择、归并、堆排序方法解决问题。 4. 对不同的排序算法进行性能比较并记录。 参考文献阅读: 1. 《数据结构(C语言版)》 严蔚敏 清华大学出版社 2. 《C语言程序设计》 丁峻岭 中国铁道出版社 3. 《C程序设计》 谭浩强 清华大学出版社 工作计划: 任务下达日期: 年 月 日 任务完成日期: 年 月 日 指导教师(签名): 学生(签名):

1

多种排序

摘 要:

排序是算法中最基础的问题之一,经典的排序算法是前人不断总结得到的,基于

比较的方法是比较直观的方式,主要存在插入法排序、堆排序、希尔排序、归并排序、快速排序,每一种排序算法都有自己的优缺点,比如插入法排序适用于那些长度短的排序,要是长的话,有些爱莫能助啦,堆排序主要是依据了二叉堆的特性,但是创建堆的过程也是一个复杂的问题,希尔排序的过程是一个不断精确的过程,但是目前也只是一个经验方式。归并排序是一个递归的问题,采用分治的思想实现,但是这种算法需要额外的存储空间,快速排序虽然是实践中比较常用的算法,但是对于有序的数组采用快速排序就是灾难。比较型算法的时间复杂度最优也只能到达O(NlogN)。

关键词:

归并排序 插入排序

快排排序 堆排序

选择排序

冒泡排序

希尔排序 内部排序

2

目 录

1. 设计背景 ......................................................................................................... 3 1.1问题描述 .................................................................................................. 4 1.2 问题分析 ................................................................................................. 4 2.设计方案 ........................................................................................................... 4 2.1 算法设计 ................................................................................................. 4 2.2 功能模块分析 ......................................................................................... 6 3.主要算法流程图 ............................................................................................. 15 4. 结果与结论 ................................................................................................... 16 4.1正确结果 ................................................................................................ 16 4.2错误信息 ................................................................................................ 18 5. 算法复杂度以及稳定性分析 ........................................................................ 18 6. 收获与致谢 ................................................................................................... 19 7. 参考文献 ....................................................................................................... 19 8. 附件 ............................................................................................................... 20

1. 设计背景

3

1.1问题描述

利用随机函数产生N个随机整数(10000以上),对这些数进行多种方法进行排序。包括:插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序。

1.2 问题分析

经典的排序算法是前人不断总结得到的,基于比较的方法是比较直观的方式,主要存在插入法排序、堆排序、希尔排序、归并排序、快速排序,每一种排序算法都有自己的优缺点。

2.设计方案

2.1 算法设计

(1)选择排序

在待排序的一组数据元素中,选出最小的一个数据元素与第一个位置的数据元素交

换;然后在剩下的数据元素当中再找最小的与第二个位置的数据元素交换,循环到只剩下最后一个数据元素为止。

(2)冒泡排序

(3)插入排序

待排序的记录放在数组R[0„n-1]中排序过程中某一时刻,R被划分成两个子区间

4

相邻的两个元素进行比较,将小的调到前面,大的调到后面。

R[0,i-1] (有序和)R[i„n-1](无序)。直接插入的基本操作是将当前无序区的一个记录R[i]插入到有序区R[0„i-1]中适当的位置

(4) 快速排序

在待排序的数组的n个元素中取一个元素(一般取第一个),将其移动到这样的位置:

在其之前的元素的值都小于它,在其之后的元素都大于它,这样是一趟快速排序;然后对数组的两个部分进行同样的操作,直到每部分只有一个记录为止;总之,每趟使表的第一个元素放在适当位置,将表两分,再对两子表进行同样的递归划分,直至划分的子表长度为1。

(5)堆排序

堆排序中 heap 算法的时间复杂度与堆所对应的完全二叉树的树高度 log2n 相关。而 heapsort 中对 heap 的调用数量级为n,所以堆排序的整个时间复杂度为O(nlog2n) 。并且堆排序是不稳定的。堆排序利用了大根堆(或小根堆)堆顶记录的关键字最大(或最小)这一特征,使得在当前无序区中选取最大(或最小)关键字的记录变得简单。

(6)归并排序

(7)希尔排序

将无序数组分割为若干个子序列,子序列不是逐段分割的,而是相隔特定的增量的子序列,对各个子序列进行插入排序;然后再选择一个更小的增量,再将数组分割为多个子序列进行排序......最后选择增量为1,即使用直接插入排序,使最终数组成为有序。增量的选择:在每趟的排序过程都有一个增量,至少满足一个规则 增量关系 d[1] > d[2] > d[3] >..> d[t] = 1 (t趟排序);根据增量序列的选取其时间复杂度也会有变化,这个不少论文进行了研究,在此处就不再深究;本文采用首选增量为n/2,以此递推,每次增量为原先的1/2,直到增量为1。

将两个或两个以上的有序表组成一个新的有序表。

5

2.2 功能模块分析

1.数据输入:采取随机函数实现输入数据表。

int input_num() {

printf(\"您要给多少个数排序?\\n\\\"); scanf(\"%d\srand(NULL);

printf(\"随机产生%d个数:\\n\\\for(int i=1;i<=data_num;i++) {

data_array[i]=rand()%10000000;

printf(\"%d\\n\ }

2.数据输出:for循环输出即可。

int outnew0() { }

其中增加了输出空格与换行区别。

3.主界面实现:

6

old[i]=data_array[i];

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

printf(\"排序后的结果为:\"); for(int i=data_num;i>=1;i--)

printf(\"%d%s\

printf(\"DATE:May twenty 2014\\n\");

printf(\"All Copyright Reserved @2014-2015 Wang Guangchun \\n\"); printf(\"ADDRESS: 604 AYIT\\r\\n\\n\\n\");

printf(\"——————————————————— \\n\"); printf(\"——————各种排序比较————————— \\n\"); printf(\"默认从大到小输出,可以选择9进行切换\\n\"); printf(\"——————————————————— \\n\"); printf(\" * * \\n\"); printf(\" * * * \\n\"); printf(\" * * \\n\"); printf(\" * 520 * \\n\"); printf(\" * 欢迎 * \\n\"); printf(\" * 使用 * \\n\"); printf(\" * * \\n\"); printf(\" * \\n\");

printf(\"欢迎再次使用\\n\\r\\n\");

printf(\"*******************************************\\n\"); printf(\"** . ..... . . ..... **\\n\"); printf(\"** . . . . . . **\\n\"); printf(\"** . . . . . ..... **\\n\"); printf(\"** . . . . . . **\\n\"); printf(\"** ..... ..... . ..... **\\n\"); printf(\"*******************************************\\n\");

4.人机交互界面:

7

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

printf(\"——————请输入指令———————— \\n\"); printf(\"————********************————— \\n\"); printf(\"————$ 1.从小到大 $————— \\n\");

printf(\"————$ 0.从大到小 $————— \\n\");

printf(\"————********************————— \\n\"); printf(\"————— 87.退出 —————— \\n\"); printf(\"——————————————————— \\n\"); printf(\"请选择:\\n\");

5.排序方法的实现:

8

printf(\"——————请输入指令———————— \\n\"); printf(\"————********************————— \\n\"); printf(\"————$ 1.快速排序 $————— \\n\"); printf(\"————$ 2.归并排序 $————— \\n\"); printf(\"————$ 3.堆排序 $————— \\n\"); printf(\"————$ 4.希尔排序 $————— \\n\"); printf(\"————$ 5.插入排序 $————— \\n\"); printf(\"————$ 6.选择排序 $————— \\n\"); printf(\"————$ 7.冒泡排序 $————— \\n\"); printf(\"————$ 8.重新随机输入 $————— \\n\"); printf(\"————$ 9.选择排序方式 $————— \\n\"); printf(\"————********************————— \\n\"); printf(\"————— 0.退出 —————— \\n\"); printf(\"——————————————————— \\n\"); printf(\"请选择:\\n\");

(1)选择排序

void chose_sort(int a[],int n) {

int min,temp; for(int i=0;imin=i;

for(int j=i;jif(a[min]>a[j])

min=j;

temp=a[min]; a[min]=a[i]; a[i]=temp;

}

}

(2)希尔排序

void ShellInsert(int *a,int d,int n) {

for (int i=d;iint j=i-d;

int temp=a[i];//记录要插入的数据

while(j >= 0&&a[j]>temp)//从后向前,找到比其小的数的位置 { }

if(j!=i-d)//存在比其小的数

a[j+d]=temp;

9

a[j+d]=a[j];//向后挪动 j-=d;

}

}

void ShellSort(int* a,int n) { }

(3)归并排序:

void __merge(int a[],int first,int mid,int last,int temp[]) { }

10

int d=n/2;//初始增量设为数组长度的一半 while(d>=1) { }

ShellInsert(a,d,n);

d=d/2;//每次增量变为上次的二分之一

int i=first,j=mid+1,m=mid,n=last,k=0; while(i<=m&&j<=n) { }

while(i<=m)

temp[k++]=a[i++]; if(a[i]<=a[j])

temp[k++]=a[i++];

else

temp[k++]=a[j++];

while(j<=n)

temp[k++]=a[j++];

for(i=0;ia[first+i]=temp[i];

void MergeSort(int a[],int first,int last,int temp[]) {

if(firstint mid=(first+last)/2; MergeSort(a,first,mid,temp); MergeSort(a,mid+1,last,temp); __merge(a,first,mid,last,temp); } }

bool MergeSort(int a[],int n) {

int *p=new int[n]; if(p==NULL) return false; else {

MergeSort(a,0,n-1,p); delete[] p; return true; } }

(4)堆排序:

void HeapAdjust(int *a,int i,int size)//调整堆 {

int lchild=2*i;//i的左孩子节点序号 int rchild=2*i+1;//i的右孩子节点序号 int max=i;//临时变量

if(i<=size/2)//如果i是叶节点就不用进行调整 {

11

if(lchild<=size&&a[lchild]>a[max]) max=lchild;

if(rchild<=size&&a[rchild]>a[max]) max=rchild; if(max!=i) {

swap(a[i],a[max]);

HeapAdjust(a,max,size);//避免调整之后以max为父节点的子树不是堆 } } }

void BuildHeap(int *a,int size)//建立堆 {

int i;

for(i=size/2;i>=1;i--)//非叶节点最大序号值为size/2 HeapAdjust(a,i,size); }

void HeapSort(int *a,int size)//堆排序 {

int j=1;

BuildHeap(a,size); for(int i=size;i>=1;i--) {

swap(a[1],a[i]); //交换堆顶和最后一个元素,即每次将剩余元素中的最大者放到最后面

//BuildHeap(a,i-1); //将余下元素重新建立为大顶堆 HeapAdjust(a,1,i-1); //重新调整堆顶节点成为大顶堆 } }

12

(5)冒泡排序:

void maopao() { }

(6)插入排序:

void charu() {

int i,j; int temp; int temp;

for(int i=1;i<=data_num;i++)

for(int j=i+1;j<=data_num;j++)

if(data_array[i]>data_array[j]) { }

temp=data_array[i];

data_array[i]=data_array[j]; data_array[j]=temp;

printf(\"插入排序:\\n\");

for(i=1;i<=data_num;i++) { } if(!t)

13

int temp=data_array[i];

for (j=i;j>0 && tempdata_array[j]=temp;

data_array[j]=data_array[j-1];

outnew0();

else

outnew1(); }

(7)快速排序:

void kuaisu1()//快速排序1 {

printf(\"快速排序:\\n\");

sort(data_array+1,data_array+data_num+1); if(!t) outnew0();

else

outnew1(); }

14

3.主要算法流程图 希尔排序 输出无序数组排序后的结果 选择排序方式 堆排序 冒泡排序 选择排序 快速排序 归并排序 插入排序 将随机数保存在数组中 产生1组随机数 主程序

选择操作方式 15

4. 结果与结论

4.1 正确结果

1.主界面 人机交互

16

2.输入界面

3.选择排序方式

4.输出结果

17

5.退出界面

4.2错误信息

5.算法复杂度以及稳定性分析

下图反映了不同算法排序的时间复杂度的级别及其空间复杂度和稳定性。 算法名称 冒泡排序 选择排序 插入排序 归并排序 快速排序 堆排序 希尔排序 平均时间 辅助空间 稳定性 O(n2) O(n2) O(n2) O(1) O(1) O(1) 是 否 是 是 否 否 否 O(nlog2n) O(n) O(nlog2n) O(n) O(nlog2n) O(1) \\ O(1) 下图表明了各种算法在不同数据规模下,完成排序所消耗的时间(毫秒为单位),从表中可以显然看出O(n2)的排序算法比O(nlog2n)的算法 时间多出几百上千倍,而且随着数据数据规模增大时间比也会随着增大;因为排序的数据采用随机数,顺序将被打乱,快速排序算法优于其他排序算法。 算法名称 冒泡排序 选择排序 插入排序 归并排序 快速排序 堆排序 希尔排序

1万 2万 3万 4万 5万 6万 7万 8万 9万 10万 1442 97 12206 21861 34017 49148 67394 88880 111939 139071 199 816 1790 178 717 1628 3 2 3 3 6 5 7 8 9 8 12 11 32 5062 7166 95 12636 16102 193 2882 4458 46 8822 119 147 17914 12 11 16 15 15 14 19 24 18 18 23 24 22 21 26 29 26 25 30 35 28 29 34 40 33 32 37 41 18

6. 收获与致谢

虽然都说“程序=数据结构+算法”,但我们在学习运用数据结构编程之前,并没能深刻体会到这一点,直到这次课设实践。 我们感受最深的一点是:以前用C编程,只是注重如何编写函数能够完成所需要的功能,似乎没有明确的战术,只是凭单纯的意识和简单的语句来堆砌出一段程序。但现在编程感觉完全不同了。在编写一个程序之前,自己能够综合考虑各种因素,首先选取自己需要的数据结构,然后选定一种或几种存储结构来具体的决定后面的函数的主要风格。最后在编写每一个函数之前,可以仔细斟酌比对,挑选出最适合当前状况的算法。这样,即使在完整的还没有写出来之前,自己心中已经有了明确的原图了。这样无形中就提高了自己编写的程序的质量。我们还体会到深刻理解数据结构的重要性。只有真正理解定义数据类型的好处,才能用好这样一种数据结构。了解典型数据结构的性质是非常有用的,它往往是编写程序的关键。这次实验中我们也出现过一些错误。但我们经过反复调试后,发现并做了修改,从而完成了此次课程设计。 在这次的数据结构课程设计中,我此次的题目是各种排序,排序实际上是编程设计中应用比较广泛的知识,通过本次设计,我对一些基本的内部排序有了很好的理解和掌握,并且通过此次课程设计中的程序运行结果很好的理解了排序各种算法的稳定性和时间复杂度,既巩固了课堂上学到的排序理论,又为自己的编程增强了实践。总之,在这次的数据结构课程设计中,收获还是蛮多的。也让自己对数据结构这门课程有了更好的认识,相信在越来越多的尝试之后,自己会不断进步不断提高的。

通过这次课程设计作业我着实感受了一次编程的乐趣,从中学到了不少知识,

7. 参考文献

1.《数据结构(C语言版)》 严蔚敏 清华大学出版社 2.《C语言程序设计》 丁峻岭 中国铁道出版社 3.《C程序设计》 谭浩强 清华大学出版社

19

8. 附件

程序源代码:

#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int N=1000010;

int data_num,data_array[N],data_arrayy[N]; int old[N],a[N],t; //数据输入 int input_num() {

printf(\"您要给多少个数排序?\\n\\\"); scanf(\"%d\srand(NULL);

printf(\"随机产生%d个数:\\n\\\for(int i=1;i<=data_num;i++)

20

{

data_array[i]=rand()%10000000;

printf(\"%d\\n\

old[i]=data_array[i];

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

}//排序后数据输出 从大到小 data_num 1 int outnew0() {

printf(\"排序后的结果为:\"); for(int i=data_num;i>=1;i--)

printf(\"%d%s\

}//排序后逆序数据输出 从小到大 1 data_num int outnew1() {

printf(\"排序后的结果为:\"); for(int i=1;i<=data_num;i++)

printf(\"%d%s\}

//排序后数据输出 从大到小 data_num-1 0 int outnew2() {

printf(\"排序后的结果为:\"); for(int i=data_num-1;i>=0;i--)

printf(\"%d%s\

}//排序后逆序数据输出 从小到大 0 data_num-1 int outnew3() {

printf(\"排序后的结果为:\"); for(int i=0;i21

printf(\"%d%s\}//插入排序 void charu() {

int i,j; int temp;

printf(\"插入排序:\\n\");

for(i=1;i<=data_num;i++) { } if(!t)

int temp=data_array[i];

for (j=i;j>0 && tempdata_array[j]=temp;

data_array[j]=data_array[j-1];

outnew0();

else

outnew1(); }//冒泡排序 void maopao() {

int temp;

for(int i=1;i<=data_num;i++)

for(int j=i+1;j<=data_num;j++)

if(data_array[i]>data_array[j]) {

temp=data_array[i];

data_array[i]=data_array[j];

22

}

data_array[j]=temp;

}//选择排序

void chose_sort(int a[],int n) {

int min,temp; for(int i=0;imin=i;

for(int j=i;jif(a[min]>a[j])

min=j;

temp=a[min]; a[min]=a[i]; a[i]=temp;

}

}//堆排序

void HeapAdjust(int *a,int i,int size)//调整堆 {

int lchild=2*i;//i的左孩子节点序号 int rchild=2*i+1;//i的右孩子节点序号 int max=i;//临时变量

if(i<=size/2)//如果i是叶节点就不用进行调整 {

if(lchild<=size&&a[lchild]>a[max]) max=lchild;

if(rchild<=size&&a[rchild]>a[max]) max=rchild; if(max!=i) {

23

swap(a[i],a[max]);

HeapAdjust(a,max,size);//避免调整之后以max为父节点的子树不是堆 } } }

void BuildHeap(int *a,int size)//建立堆 {

int i;

for(i=size/2;i>=1;i--)//非叶节点最大序号值为size/2 HeapAdjust(a,i,size); }

void HeapSort(int *a,int size)//堆排序 {

int j=1;

BuildHeap(a,size); for(int i=size;i>=1;i--) {

swap(a[1],a[i]); //交换堆顶和最后一个元素,即每次将剩余元素中的最大者放到最后面

//BuildHeap(a,i-1); //将余下元素重新建立为大顶堆 HeapAdjust(a,1,i-1); //重新调整堆顶节点成为大顶堆 }

}//快速排序可以选择用algorithm里的sort排序实现 void kuaisu1()//快速排序1 {

printf(\"快速排序:\\n\");

sort(data_array+1,data_array+data_num+1); if(!t) outnew0();

else

24

outnew1(); }

void kuaisu2()//快速排序2 {

sort(data_array+1,data_array+data_num+1); if(!t) outnew0();

else

outnew1(); }//希尔排序

void ShellInsert(int *a,int d,int n) { }

void ShellSort(int* a,int n) {

for (int i=d;iint j=i-d;

int temp=a[i];//记录要插入的数据

while(j >= 0&&a[j]>temp)//从后向前,找到比其小的数的位置 { }

if(j!=i-d)//存在比其小的数

a[j+d]=temp;

a[j+d]=a[j];//向后挪动 j-=d;

int d=n/2;//初始增量设为数组长度的一半 while(d>=1) {

25

}

ShellInsert(a,d,n);

d=d/2;//每次增量变为上次的二分之一

}//归并排序

void __merge(int a[],int first,int mid,int last,int temp[]) { }

void MergeSort(int a[],int first,int last,int temp[]) {

if(firstint mid=(first+last)/2; MergeSort(a,first,mid,temp); MergeSort(a,mid+1,last,temp); __merge(a,first,mid,last,temp); }

26

int i=first,j=mid+1,m=mid,n=last,k=0; while(i<=m&&j<=n) { }

while(i<=m)

temp[k++]=a[i++]; if(a[i]<=a[j])

temp[k++]=a[i++];

else

temp[k++]=a[j++];

while(j<=n)

temp[k++]=a[j++];

for(i=0;ia[first+i]=temp[i];

}

bool MergeSort(int a[],int n) {

int *p=new int[n]; if(p==NULL) return false; else {

MergeSort(a,0,n-1,p); delete[] p; return true; } }//输出 void print() {

printf(\"欢迎再次使用\\n\\r\\n\");

printf(\"*******************************************\\n\"); printf(\"** . ..... . . ..... **\\n\"); printf(\"** . . . . . . **\\n\"); printf(\"** . . . . . ..... **\\n\"); printf(\"** . . . . . . **\\n\"); printf(\"** ..... ..... . ..... **\\n\"); printf(\"*******************************************\\n\"); }//主函数,显示菜单并进行算法选择 int main() {

printf(\"DATE:May twenty 2014\\n\");

printf(\"All Copyright Reserved @2014-2015 Wang Guangchun \\n\"); printf(\"ADDRESS: 604 AYIT\\r\\n\\n\\n\");

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

27

printf(\"——————各种排序比较————————— \\n\"); printf(\"默认从大到小输出,可以选择9进行切换\\n\"); printf(\"——————————————————— \\n\"); printf(\" * * \\n\"); printf(\" * * * \\n\"); printf(\" * * \\n\"); printf(\" * 520 * \\n\"); printf(\" * 欢迎 * \\n\"); printf(\" * 使用 * \\n\"); printf(\" * * \\n\"); printf(\" * \\n\");

int n;//变量定义用于菜单选择

input_num();//调用输入函数,请求用户输入数据 while(true) {

printf(\"\\n——————————————————— \\n\"); printf(\"——————请输入指令———————— \\n\"); printf(\"————********************————— \\n\"); printf(\"————$ 1.快速排序 $————— \\n\"); printf(\"————$ 2.归并排序 $————— \\n\"); printf(\"————$ 3.堆排序 $————— \\n\"); printf(\"————$ 4.希尔排序 $————— \\n\"); printf(\"————$ 5.插入排序 $————— \\n\"); printf(\"————$ 6.选择排序 $————— \\n\"); printf(\"————$ 7.冒泡排序 $————— \\n\"); printf(\"————$ 8.重新随机输入 $————— \\n\"); printf(\"————$ 9.选择排序方式 $————— \\n\"); printf(\"————********************————— \\n\"); printf(\"————— 0.退出 —————— \\n\"); printf(\"——————————————————— \\n\");

28

printf(\"请选择:\\n\"); scanf(\"%d\switch(n) {

case 1://快速排序

kuaisu1();

break;

case 2://归并排序

printf(\"归并排序:\\n\"); for(int j=0;jdata_arrayy[j]=data_array[j+1]; MergeSort(data_arrayy,data_num); if(t==1) outnew3(); else

outnew2(); break; case 3://堆排序

printf(\"堆排序:\\n\");

HeapSort(data_array,data_num); if(!t) outnew0(); else

outnew1();

break;

case 4://希尔排序

printf(\"希尔排序:\\n\"); for(int j=0;jdata_arrayy[j]=data_array[j+1]; ShellSort(data_arrayy,data_num);

29

if(t==1)

outnew3(); else

outnew2();

break;

case 5://插入排序 charu();

break;

case 6://选择排序

printf(\"选择排序:\\n\");

for(int j=0;jdata_arrayy[j]=data_array[j+1]; chose_sort(data_arrayy,data_num);

if(t==1)

outnew3(); else

outnew2();

break;

case 7://冒泡排序

printf(\"冒泡排序:\\n\");

maopao();

if(t==1)

outnew1(); else

outnew0();

break;

case 8://重新随机输入 input_num();

break;

case 9://副主界面操作实现

30

printf(\"——————请输入指令———————— \\n\"); printf(\"————********************————— \\n\"); printf(\"————$ 1.从小到大 $————— \\n\"); printf(\"————$ 0.从大到小 $————— \\n\"); printf(\"————********************————— \\n\"); printf(\"————— 87.退出 —————— \\n\"); printf(\"——————————————————— \\n\"); printf(\"请选择:\\n\"); scanf(\"%d\ if(t==87) {

print(); return 0; }

printf(\"再次输入排序方法!!!\\n\");

break;

//退出

case 0: print();

//退出

return 0; }

} return 0;

break;

default:printf(\"\\n选项输入有误,请重试!\\n\\n\");//输入有误提示 }

31

指导教师评语: 1、课程设计报告: a、内容: 不完整□ 完整 □ 详细 □ b、方案设计: 较差 □ 合理 □ 非常合理□ c、实现: 未实现□ 部分实现□ 全部实现□ d、文档格式: 不规范□ 基本规范□ 规范 □ 2、出勤: 全勤 □ 缺勤 次 3、答辩: a、未能完全理解题目,答辩情况较差 □ b、部分理解题目,部分问题回答正确 □ c、理解题目较清楚,问题回答基本正确 □ d、理解题目透彻,问题回答流利 □ 课程设计报告成绩: ,占总成绩比例: 50% 课程设计其它环节成绩: 环节名称: 出勤 ,成绩: ,占总成绩比例: 20% 环节名称: 答辩 ,成绩: ,占总成绩比例: 30% 总 成 绩: 指导教师签字: 年 月 日

32

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- howto234.com 版权所有 湘ICP备2022005869号-3

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务