实验目的
尝试对示例数组进行冒泡排序,最终输出升序数组
实验要点
冒泡排序算法原理:
-
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
-
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
-
针对所有的元素重复以上的步骤,除了最后一个。
-
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
实验步骤
1.打开VS2010,创建新项目,选择空项目并命名,在源文件中添加新建项,选择C++文件并命名,后缀为.cpp
2.敲代码时先写出基础框架
# include <stdio.h>
int main()
{
return 0;
}
3.在纸上写出大致思路:定义一个数组(示例为a[6] = {3, 4, 7, -2, -11, 8}),定义一个被调函数(示例为sort函数,实参为a[0]地址和数组长度6),再定义被调函数中的形参(示例为aArr和len),根据冒泡排序算法定义三个变量(i, j, k),i每循环一次即找出最大数并排序,j每循环一次即比较相邻两个数的值,若比较的第二个数比第一个数小则互换,代码如下:
# include <stdio.h>
//冒泡排序
void sort(int * aArr,int len)//被调函数,定义数组指针变量和数组长度
{
int i,j,k;
for(i = 0;i < len-1;++i)//两两比较,较大者放后面,每循环一次就能找出一个最大值并排序
{
for(j = 0;j < len-i-1;++j)
{
if(aArr[j] > aArr[j+1])//升序
{
k = aArr[j];
aArr[j] = aArr[j + 1];
aArr[j + 1] = k;//互换两个数
}
}
}
return;
}
//主函数
int main()
{
int a[6] = {3, 4, 7, -2, -11, 8};//示例数组
int i;
sort(a, 6);//调用函数
for(i = 0;i < 6;++i)
printf("%d ",a[i]);//输出排序后的数组
return 0;
}
4.实验结果(若运行时cmd没有显示且没有报错,可以右键点击总工程名,点击属性,修改链接器下的系统中的子系统,选择控制台 (/SUBSYSTEM:CONSOLE)然后应用确定):
实验小结
刚开始听郝斌老师讲冒泡排序有一点懵,但是边思考边写出代码再一步步修改错误的过程让我收获颇多,学习代码思想、多敲代码、多试错会使自己掌握更加清晰牢固
冒泡排序算法原理参照链接:冒泡排序_百度百科 (baidu.com)https://baike.baidu.com/item/%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F/4602306