数据结构试验一冒泡排序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
云南大学数学与统计学实验教学中心
实验报告
课程名称:数据结构与算法学期:20011-2012学年第二学期成绩:
指导教师:xxx学生姓名:yyy学生学号:yyyyyyy
实验名称:顺序结构的应用实验要求:必作实验学时:2学时
实验编号:1实验日期:第2周完成日期:2012-03-08
学院:yyyy专业:信息与计算科学年级:2010级
一、实验目的
由于顺序存储结构的操作相对比较简单,而且在前期课程《高级语言程序设计》中使用
得也较多,
本试验旨在帮助学生复习与巩固顺序存储结构(数组)的应用与操作。
二、实验内容
顺序存储结构(数组)的排序问题。根据下列各个要求用冒泡排序的方法、以数组存储任意给定的n个整数(n 可变) 并对其进行排序,然后输出排序前和排序后的结果。
三、实验环境
Windows XP
程序设计语言C
四、实验过程
1.实验要求:
[基本要求]:
1.n 个整数从键盘输入,用一个主函数完成非递减排序,程序不考虑排序效率(可用二重循环实现)。
2、n 个整数从键盘输入,用一个主函数完成非递减排序,但要求改进算法提高效
率(尽量减少外循环的执行次数)。
3、对n个数的排序过程可选择升序或降序(要求设置参数来选择),用一个c函数实现,
再编一个输出过程(函数)来完成排序前、后数组的输出;
在主函数中随机产生1到1000之间的n 个待排序整数并存储于数组中;调用输出过程之;
调用排序过程进行有选择的升/降序排序;最后调用输出过程输出排序后的结果数组。
[实现提示]:
基本要求2可参考讲义P16的算法完成。
基本要求3必须用一个主函数和两个子函数来完成,升或降序的要求让用户从键盘
根据提示输入选择,排序程序应根据选择实现既可升也可降序的排序。
2.实验设计流程图(以下内容请同学认真填写)可以手工绘制,但要求规范
3.程序设计代码及解释:(必须给出必要的程序注解,以保证可读性)
#include
#include
#include
#define N 1000/*macro definition,allocate size of array*/
int main(){
void creatRandomNumber(int arr1[N]);/*declare "creatRandomNumber" function*/ void bubbleSort(char c,int arr2[N]);/*declare bubble sort function*/
void output(int arr3[N]);/*declare output function*/
int array[N];/*definition array*/
char choose='Y';/*definition char to judge choose ascending or descending */
creatRandomNumber(array);/*call "creatRandomNumber()"to crate random number*/ printf("Before sorting:\n");
output(array);/*output array before sorted*/
bubbleSort(choose,array);/*call "bubblesort" function to sort the array*/
printf("After sorting:\n");
output(array);/*output the array after sorted*/
return 0;
}
void creatRandomNumber(int arr1[N]){
int i,rand(void);
srand(time(0));/*salt source*/
for(i=0;i arr1[i]=rand()%N+1;/*crate random number store to array*/ } void bubbleSort(char c1,int arr2[N]){ int k,i,j,change,temp; while(c1!='A'&&c1!='a'&&c1!='D'&&c1!='d'){/*require choose ascending(A\a) or descending(D\d)*/ printf("ascending sort or descending sort.(A/D)\n"); c1=getchar();} if(c1=='A'||c1=='a') k=1;/*if input a or A choose ascending*/ else k=0; for(i=N-1,change=1;i>=1&&change;i--){/*outer loop judge sorted or not */ change=0;/*setting the array isn't sorted*/ for(j=0;j if(k?arr2[j]>arr2[j+1]:arr2[j] {temp=arr2[j];arr2[j]=arr2[j+1];arr2[j+1]=temp;change=1;/*exchange the date*/} } } void output(int arr3[N]){/*the function of output array*/ int i; for(i=0;i printf("%-4d",arr3[i]); printf("\n"); }