第六章多文件(>=3)结构
注意引用first.h头文件时的格式:#include"first.h
头文件h1里面只需要放cpp1函数声明,其他什么都不需要
cpp1文件里面放模板程序,引用头文件h1
cpp2里面放main函数
多文件结构主要是追求代码重用,其他文件中都可以再次使用已定义的函数
第七章数组
数组运算顺序图
注意,下标也是一次运算,二维数组本身就需要两次运算
初始化一个四行三列的数组示例
int a[4][3]=
{
{1,1,1},
{2,2,2},
{3,3,3},
{4,4,4}
}
冒泡排序
外循环从i=1到i<=n-1,因为最后一个元素下标是n,如果是n,n+1越界
内循环是j=1到j<=n-i,表示每一轮进行的次数,因为每一轮结束后,后i个都完成了排序,所以j<=n-i,难以理解就带入实际情况思考
//最初版本
#include<iostream>
using namespace std;
int a[100], n;
int main()
{
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
for (int i = 1; i <= n - 1; i++)
{
for (int j = 1; j <= n - i; j++)
if (a[j] > a[j + 1])
swap(a[j], a[j + 1]);
}
for (int i = 1; i <= n; i++)
cout << a[i] << " ";
}
初版冒泡排序缺点:会认真地、一丝不苟地执行每一轮,即使中途就全部排好序 ,简称:过于死板
so,这是改良版,当排序到这一轮,都没有变化时,宝贝,你已经是一个成熟的数组啦,你已经毕业啦,快滚犊子吧
//改良
#include<iostream>
using namespace std;
void bubble_sort(int arr[], int len)
{
int change = 1;
for (int i = 0; i < len - 1 && change != 0; i++)
{
change = 0;
for (int j = 0; j < len - 1 - i; j++)
if (arr[j] > arr[j + 1])
{
swap(arr[j], arr[j + 1]);
change = 1;
}
}
}
int main() {
int a[7] = { 3,6,4,2,11,10,5 };
bubble_sort(a,