修改密码

【2024课程】零基础学会C++编程课程

成品课程

陈远龙老师主讲 & 答疑

课程题单 - T1000

未购买 · 可先试学25节课

课程目录展开/折叠

第30课 数组

播放快捷键

播放/暂停:空格(或鼠标单击)      全屏:F(或鼠标双击)      退出全屏:Esc

快进10 / 30 / 60秒:方向键→ / Ctrl + 方向键→ / Shift + 方向键→

快退10 / 30 / 60秒:方向键← / Ctrl + 方向键← / Shift + 方向键←

本节课讲解配套PPT&板书:

本节课讲解到的源代码

源代码下载:第30课 数组-源代码下载

1. P1107-简单的排序-1
#include <bits/stdc++.h>
using namespace std;

// 选择排序算法 

int a[105];
int n;

int main()
{
    cin >> n;
    for (int i = 0; i < n; i ++)
    {
        cin >> a[i];
    }

    // 排序
    int cnt = 0;
    for (int i = 0; i < n - 1; i ++)
    {
        int k = i; // k代表第i轮中最小元素的位置 
        for (int j = i + 1; j < n; j ++)
        {
            cnt ++;
            if (a[j] < a[k]) k = j;
        }
        if (i != k) swap(a[i], a[k]);
    } 

    // cout << cnt << endl;

    for (int i = 0; i < n; i ++)
    {
        cout << a[i] << ' ';
    }

    return 0;
}
2. P1107-简单的排序-2
#include <bits/stdc++.h>
using namespace std;

// 选择排序算法 

int a[105];
int n;

int main()
{
    cin >> n;
    for (int i = 0; i < n; i ++)
    {
        cin >> a[i];
    }

    // STL sort排序 默认从小到大排序 
    // sort(a, a + n); 
    // sort(a, a + n, greater<int>());
    sort(a, a + n, less<int>());

    for (int i = 0; i < n; i ++)
    {
        cout << a[i] << ' ';
    }

    return 0;
}
3. P1017-约瑟夫环-1
#include <bits/stdc++.h>
using namespace std;

int a[305]; // 0 => 在圈中 1 => 出圈 
int n, m;

int main()
{
    cin >> n >> m;

    int bs = 1; // 报数变量 1 - m 
    int i = 1; // 遍历数组的索引
    int r = n; // 剩余的人 

    // 模拟报数过程 
    while (r > 1)
    {
        if (a[i] == 0) // 当前是在圈 
        {
            if (bs == m) // 报到需要出列的号 
            {
                a[i] = 1;
                bs = 1; // ? 重新置报数值 
                r --;
            }
            else
            {
                bs ++;
            }            
        }

        i = (i + 1) % n; // % 3 => % n
    }

    for (int i = 1; i <= n; i ++)
    {
        if (a[i] == 0) 
        {
            cout << i;
            break;
        }
    }

    return 0;
}
4. P1017-约瑟夫环-2
#include <bits/stdc++.h>
using namespace std;

int a[305]; // 0 => 在圈中 1 => 出圈 
int n, m;

int main()
{
    cin >> n >> m;

    int bs = 1; // 报数变量 1 - m 
    int i = 1; // 遍历数组的索引
    int r = n; // 剩余的人 

    // 模拟报数过程 
    while (r > 1)
    {
        if (bs == m) // 报到需要出列的号 
        {
            a[i] = 1;
            // bs = 1; // ? 重新置报数值 
            bs = 0; // 修正一下 
            r --;
        }

        i = (i + 1) % n; // % 3 => % n
        if (a[i] == 0) bs ++;
    }

    for (int i = 1; i <= n; i ++)
    {
        if (a[i] == 0) 
        {
            cout << i;
            break;
        }
    }

    return 0;
}

本节课答疑

建议大家有问题先通过AI答疑(比如:DeepSeek 等),AI时代需要学会使用AI辅助学习

陈远龙老师视频讲解:如何使用DeepSeek进行答疑?

通过AI未能获得满意解答的,可以联系陈远龙老师答疑

目录