第九章的C++基础课件主要讲解了函数的高级应用,包括数组作为函数参数、查找算法的函数实现、排序算法的函数实现、函数模板的定义和应用以及函数重载的应用。
1-2 数组作为函数参数
在C++中,数组可以作为函数参数,但传递的不是数组元素的值,而是数组的首地址。这意味着当数组名作为参数传入函数时,函数接收到的是指向数组首元素的指针。因此,即使函数内部改变了数组的元素值,这些变化也会反映到函数外部的原数组上。需要注意的是,形参和实参必须是类型相同的数组,并且要有明确的数组说明,否则会导致错误。
1-4 查找的函数实现
查找是编程中的常见操作,包括顺序查找和折半查找。顺序查找是从数组的第一个元素开始逐个比较,直到找到目标元素或遍历完整个数组。这种方法适用于无序数组,但效率较低,时间复杂度为O(n)。折半查找则是在有序数组中进行,每次比较中间元素,根据比较结果缩小查找范围,时间复杂度为O(logn)。
1-6 折半查找
折半查找通过比较中间元素来减少查找次数,适合于已经排序的数组。每次比较后,根据比较结果将查找区间减半,直到找到目标元素或区间为空(查找失败)。
1-8 冒泡排序的函数实现
冒泡排序是一种简单的排序算法,通过比较相邻元素并交换位置来逐步排序。它使用两个嵌套循环,时间复杂度为O(n^2),对于大数据量的排序效率较低。
1-9 快速排序的函数实现
快速排序是冒泡排序的优化,采用分治策略,通过一趟排序将数组分为两个子数组,使得一个子数组的所有元素都小于另一个子数组的所有元素,然后对这两个子数组分别进行快速排序。快速排序的平均时间复杂度为O(n log n),在大多数情况下表现优于冒泡排序。
1-10 函数模板
函数模板是C++的特性,它提供了一种泛型编程的方式,可以用于创建适用于多种数据类型的函数。函数模板并不是实际的函数,而是一个模板,编译器会根据模板实例化出对应数据类型的函数。
1-11 函数重载
函数重载允许在同一作用域内定义多个同名但参数列表不同的函数。通过参数列表来区分不同的函数,这使得我们可以为同一操作提供不同版本的函数,根据传入的参数类型自动选择合适的函数。
1-12 小结
本章内容主要扩展了函数的概念,包括数组参数、查找和排序算法的函数实现、函数模板和函数重载。这些高级应用提升了代码的复用性和灵活性,使得编程更加高效。
习题121要求编写一个C++函数,使用数组名作为参数进行升序排列,并输出排序前后的数组元素。这个问题可以通过实现快速排序或冒泡排序算法来解决,注意在函数中正确地接收和处理数组参数。