C/C++基础知识复习(53)

1. ​插入排序 & 计数排序

插入排序:
cpp 复制代码
void insertionSort(int arr[], int n) {
    for (int i = 1; i < n; i++) {
        int key = arr[i];
        int j = i-1;
        while (j >= 0 && arr[j] > key) {
            arr[j+1] = arr[j];
            j--;
        }
        arr[j+1] = key;
    }
}
  • 时间复杂度:O(n²)
  • 空间复杂度:O(1)
  • 稳定性:稳定
计数排序:
cpp 复制代码
void countingSort(int arr[], int n) {
    int maxVal = *std::max_element(arr, arr+n);
    std::vector<int> count(maxVal+1, 0);
    for (int i = 0; i < n; i++) count[arr[i]]++;
    int idx = 0;
    for (int i = 0; i <= maxVal; i++) {
        while (count[i]--) arr[idx++] = i;
    }
}
  • 时间复杂度:O(n+k)
  • 空间复杂度:O(k)
  • 稳定性:稳定

2. ​数据库的三范式

数据库的三范式是关系数据库设计的规范化原则,包括:

  1. 第一范式(1NF)​:每个字段都是原子的,不可再分。
  2. 第二范式(2NF)​:在1NF基础上,非主键字段完全依赖于主键。
  3. 第三范式(3NF)​:在2NF基础上,消除传递依赖。
通俗解释:

三范式就像整理房间的规则,确保数据存储的合理性和高效性。

第一范式(1NF)​:每个物品都放在固定的位置,不能乱放。

第二范式(2NF)​:每个物品都放在它专属的抽屉里。

第三范式(3NF)​:抽屉里不能放其他抽屉的钥匙。

相关推荐
草莓熊Lotso36 分钟前
Linux 文件描述符与重定向实战:从原理到 minishell 实现
android·linux·运维·服务器·数据库·c++·人工智能
傻乐u兔37 分钟前
C语言进阶————指针4
c语言·开发语言
历程里程碑39 分钟前
Linux22 文件系统
linux·运维·c语言·开发语言·数据结构·c++·算法
2601_949146538 小时前
C语言语音通知接口接入教程:如何使用C语言直接调用语音预警API
c语言·开发语言
在路上看风景8 小时前
19. 成员初始化列表和初始化对象
c++
zmzb01038 小时前
C++课后习题训练记录Day98
开发语言·c++
念风零壹9 小时前
C++ 内存避坑指南:如何用移动语义和智能指针解决“深拷贝”与“内存泄漏”
c++
孞㐑¥9 小时前
算法——BFS
开发语言·c++·经验分享·笔记·算法
知南x10 小时前
【Ascend C系列课程(高级)】(1) 算子调试+调优
c语言·开发语言
MZ_ZXD00111 小时前
springboot旅游信息管理系统-计算机毕业设计源码21675
java·c++·vue.js·spring boot·python·django·php