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)​:抽屉里不能放其他抽屉的钥匙。

相关推荐
phltxy7 小时前
C语言操作符详解
java·c语言·算法
RuoZoe7 小时前
从 2026 年 3 月 1 日开源,到 26.10.9:Jalium UI 半年时间到底走了多远?
c语言·c++
鱼子星_9 小时前
【C++】继承和多态(上)
c++·笔记
知无不研10 小时前
c语言中循环的介绍与简单应用
c语言·开发语言·算法·循环·for·while
郝学胜-神的一滴10 小时前
Qt 高级编程 045:坐标体系深度实战
开发语言·c++·windows·python·qt·程序人生
码匠许师傅10 小时前
【设计模式精讲】22.中介者模式(Mediator)
c++·设计模式·软件工程·uml·中介者模式
HRTOS11 小时前
HRTOS 4.0 驱动库:06_Storage 存储设备驱动——24C02 EEPROM与I²C驱动开发
c语言·驱动开发·嵌入式硬件·51单片机
爱吃巧克力的程序媛13 小时前
main.cpp注册 C++ 类到 QML 元对象系统
c++·qt
YYYing.13 小时前
【C++进阶系列 (二)】关于线程堆栈的那些事——函数调用过程
开发语言·c++·函数·线程堆栈
键盘会跳舞14 小时前
【C++多线程】死锁诊断工具实战:从 Windows 到 Linux 的全链路排查
linux·c++·windows·死锁