数据结构试验一冒泡排序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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");

}

相关文档
最新文档