十大歌手(冒泡排序)"/>
【C语言】案例三十四 校园十大歌手(冒泡排序)
案例分析
首先将每位歌手的得分储存到一维数组中,其次构建一个排序函数,使用函数实现对一维数组的排序,因此需要将一维数组作为函数函数参数传入函数。
必备知识
- 一维数组作为函数参数
在程序中,为了方便对数组的操作,经常会定义一些操作数组的功能函数,这些函数将数组作为函数参数,在数组作为函数参数时,必须要保证形参与实参的数组是相同类型,且有明确的数组说明。如数组维度,数组大小等。
例如下面两种参数类型:
func(int arr[5]);
func(int arr[],int n);
这两种参数类型都指定了数组的维度和数组大小,第二行代码中参数n代表数组的长度。
需要注意的是,数组作为函数参数时,传递的就是数组所在的内存块地址,形参与实参操作的是同一块内存。在形参中改变数组中的元素,实参的数组也会改变。
- 冒泡排序法
冒泡排序就是不断地比较数组中相邻的两个元素,轻小者上浮,较大者向下沉,整个过程和水中起泡上升的原理相似。
具体如下:
(1)从第一个元素开始,依次向相邻的两个元素进行两两比较,直到最后两个元素完成比较,如果前一个元素比后一个元素大,则交换位置,整个过程完成后,数组中的最后一个元素就是最大值。
(2)除了最后一个元素,将剩余的元素继续进行两两比较,将数组中第二大的数放到倒数第二的位置
(3)以此类推(这个时候我想到了递归)
案例实现
1,案例设计
- 自定义一个实现冒泡排序算法的函数,函数中的参数为数组名和数组大小
- 在主函数中定义一个一维数组来存储各位歌手的得分
- 使用for循环分别录入各位歌手的的得分
- 试用冒泡排序算法函数对得分进行排序
- 使用for循环在屏幕上输出排序的结果
2,完整代码
#include <stdlib.h>
#include <stdio.h>//冒泡排序
void BubbleSort(int s[],int n) //函数参数:数组与数组大小
{int i,j,temp;for (i = 0;i < n -1 ;i ++ ){for(j = 0;j < n -1-i ;j ++)if (s[j] > s[j + 1]){temp = s[j];s[j] = s[j + 1];s[j + 1] = temp;}}
}int main()
{int i;int a[10];printf ("请输入十位歌手的分数:\n");for(i = 0;i < 10 ; ++i )scanf("%d",&a[i]);BubbleSort(a,10);printf ("排序后结果为:\n");for(i = 0;i < 10; ++i )printf("%d\n",a[i]);system ("pause");return 0;
}
代码运行结果如下:
更多推荐
【C语言】案例三十四 校园十大歌手(冒泡排序)
发布评论