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

相关推荐
风中月隐25 分钟前
C语言中以坐标的方式图解“字母金字塔”的绘制
c语言·开发语言·算法·字母金子塔·坐标图解法
崇山峻岭之间26 分钟前
C++ Prime Plus 学习笔记041
c++·笔记·学习
_风华ts29 分钟前
虚函数与访问权限
c++
1001101_QIA33 分钟前
C++中不能复制只能移动的类型
开发语言·c++
闻缺陷则喜何志丹44 分钟前
【组合数学】P9418 [POI 2021/2022 R1] Impreza krasnali|普及+
c++·数学·组合数学
晨曦夜月1 小时前
头文件与目标文件的关系
linux·开发语言·c++
NeDon1 小时前
[OJ]数据结构:移除链表元素
c语言·数据结构·算法·链表
刃神太酷啦1 小时前
C++ list 容器全解析:从构造到模拟实现的深度探索----《Hello C++ Wrold!》(16)--(C/C++)
java·c语言·c++·qt·算法·leetcode·list
Herbert_hwt1 小时前
C语言结构体详解:从定义到实战应用
c语言
承渊政道1 小时前
一文彻底搞清楚链表算法实战大揭秘和双向链表实现
c语言·数据结构·算法·leetcode·链表·visual studio