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

相关推荐
charlie11451419111 分钟前
深入理解Qt的SetWindowsFlags函数
开发语言·c++·qt·原理分析
呜喵王阿尔萨斯18 分钟前
编程中的英语
c语言·c++
whoarethenext1 小时前
使用 C++/Faiss 加速海量 MFCC 特征的相似性搜索
开发语言·c++·faiss
only-lucky1 小时前
C语言socket编程-补充
服务器·c语言·php
向阳@向远方2 小时前
第二章 简单程序设计
开发语言·c++·算法
JeffersonZU3 小时前
Linux/Unix进程概念及基本操作(PID、内存布局、虚拟内存、环境变量、fork、exit、wait、exec、system)
linux·c语言·unix·gnu
Mr_Xuhhh3 小时前
信号与槽的总结
java·开发语言·数据库·c++·qt·系统架构
github_czy3 小时前
RRF (Reciprocal Rank Fusion) 排序算法详解
算法·排序算法
liulilittle3 小时前
VGW 虚拟网关用户手册 (PPP PRIVATE NETWORK 基础设施)
开发语言·网络·c++·网关·智能路由器·路由器·通信
ruanjiananquan994 小时前
c,c++语言的栈内存、堆内存及任意读写内存
java·c语言·c++