前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >为什么高位ADC对参考源要求极高?(通俗版)

为什么高位ADC对参考源要求极高?(通俗版)

作者头像
云深无际
发布于 2025-06-08 05:38:22
发布于 2025-06-08 05:38:22
7100
代码可运行
举报
文章被收录于专栏:云深之无迹云深之无迹
运行总次数:0
代码可运行

在设计高位表的时候知道知道要搞一个非常稳的基准源,但是有没有通过定量计算这个影响的呢?没有!那我自己写。

在设计高位表的时候知道知道要搞一个非常稳的基准源,但是有没有通过定量计算这个影响的呢?没有!那我自己写。

高频 + 高 ENOB 采样 → 需滤除参考源噪声 → 要求 RC 滤波 + 参考源自身 SNR ≥ 140 dB

你用了一个非常牛的 ADC,比如 24-bit、速度又快,想测得又准又细(比如微伏、皮安级别的信号)。

但你有没有想过:“这个 ADC 是参照哪一个电压做比较的?” 

答案是:参考电压(REF)!

也就是说即使你有世界上最灵敏的尺子(ADC),但如果你“拿的基准点”在抖动(参考源有噪声),那也没用!

想实现高频率下高精度采样(比如 ENOB > 22,SNR > 140 dB),那么参考源必须非常非常稳定,也就是说,它的噪声必须极低!

要想压低参考源的噪声,就得:

选一颗低噪声的参考芯片(比如 LTC6655、ADR1000 等);在输出端加一个 RC 滤波器(像是减震器,阻挡高频噪声);

整体要做到:

噪声滤波器处理之后的总噪声

假设参考源输出有 5 µV 的 RMS 噪声,那么对于 ±2.5 V 满量程 ADC:

不够!你必须再降噪,靠滤波器或换更好的 REF

参考电压(REF)直接参与 ADC 量化

对于 24-bit 输出(如 LTC2500 SDOB):

LSB ≈ 0.6 µV(@ 5 V REF)

如果 REF 自身噪声超过 1–2 LSB(即几 µV RMS),会直接破坏有效位数(ENOB)

“参考源 SNR ≥ 140 dB” 如何理解?

若目标 ENOB = 21 bit,对应:

理论

加上 margin(滤波余量、谐波、PSRR):

参考源需


如何实现高有效位:RC滤波器 + 超低噪声 REF

当然了这个是有点苛刻的,贵死了:

ADR1000
ADR1000

ADR1000

实际上就算啥这颗都噪音有点超!

参数

数值

说明

输出电压噪声密度(typ.)

32 nV/√Hz @ 1 kHz

中频段的典型噪声密度

0.1 Hz – 10 Hz 低频噪声

0.25 µV p-p typ.

超低频 flicker 区间,总体漂移范围

长时间稳定性

< 2 ppm/1000 hrs

用于精密 ADC 时非常重要

32 nV/√Hz 在业界属于非常低噪声等级,与 LTZ1000、ADR1000A 同等级;

假设带宽为 10 kHz 时,总噪声为:

比如连接 24-bit ADC(LSB ≈ 0.15 µV)时会造成约 20 个码抖动,因此建议搭配 RC 滤波器衰减。

ADR1000 是目前顶级的电压参考,适合 ≥ 20-bit 精密 ADC 应用;若用于高 ENOB(如 22-bit+)的 ADC,仍建议加 >20 dB 的低通滤波器。

我们想要的数据是这样的:

参数

推荐值

噪声密度

< 0.1 µV/√Hz

RMS 噪声

< 2–5 µV

温漂

< 2 ppm/°C

器件

LTC6655-5、LM399、ADR1000、LT1236A

RC 滤波器设计:

目标:带宽限制在 ADC 输出带宽之下;

若 fBW = 10 kHz,则:

REF: SNR  ≥ 135–140 dB

REF :噪声密度  < 0.1 µV/√Hz

滤波器带宽:  < ADC 带宽(≈ 0.45 × fout)

参考源 + RC 滤波器(10 Ω + 10 µF) 的输出噪声频谱(PSD)及其总噪声影响
参考源 + RC 滤波器(10 Ω + 10 µF) 的输出噪声频谱(PSD)及其总噪声影响

参考源 + RC 滤波器(10 Ω + 10 µF) 的输出噪声频谱(PSD)及其总噪声影响

RC 滤波器  10 Ω + 10 µF

RC 截止频率  

模拟 ADC 带宽  10 kHz

橙色线:滤波后参考电压的等效噪声密度(单位 µV/√Hz);

灰色虚线:RC 滤波器的 −3dB 截止频率;

橙色虚线:ADC 等效带宽(如 DF = 64 时);

面积的平方根 = 总 RMS 噪声 ≈ 5.00 µV

这说明:即使使用 非常低噪声的 0.1 µV/√Hz 参考源;如果 RC 滤波器截止频率仍高于 ADC 带宽;那么噪声仍有 5 µV 量级,会限制高 ENOB 表现(< 22bit);

若目标是:ENOB ≥ 23bit(SNR ≥ 140 dB);则总 RMS 噪声需 < 2.5 µV

还可以使用这些方法,但是我觉得是降不下去了:

LTC6655
LTC6655

LTC6655

方式

效果

提高电容(如 100 µF)

降低带宽,进一步压低噪声

降低噪声密度(如 0.05 µV/√Hz)

降低整个 PSD

使用 π 滤波器(R-C-R)

增强高频衰减

使用带限 REF 芯片(如 LTC6655)

限制 1/f 噪声影响

参考电压输出的总噪声大约是:5 µV RMS

这意味着你的 ADC 最多能保持大约 22–23 位有效位(ENOB),再高就容易被参考源本身的噪声拖后腿。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
import matplotlib.pyplot as plt


def compute_snr_enob_for_ref(
    ref_psd_uv_per_sqrtHz=0.1,
    r_ohm=10,
    c_f=10e-6,
    adc_vref=2.5,
    adc_bw_hz=10e3,
    full_scale=True,
    plot=True,
):
    """
    计算 REF+RC 滤波器组合下的总噪声、SNRENOB

    参数:
    - ref_psd_uv_per_sqrtHz: 参考源噪声密度(单位 µV/√Hz)
    - r_ohm: 滤波器电阻 R(Ω)
    - c_f: 滤波器电容 CF- adc_vref: ADC 满量程电压(V- adc_bw_hz: ADC 带宽(Hz)
    - full_scale: 输入是否占满满量程
    - plot: 是否绘图显示 PSD

    返回:
    - total_noise_uv: 总输出 RMS 噪声(µV- snr_db: 信噪比(dB)
    - enob: 有效位数(bit)
    """

    psd_v2_per_Hz = (ref_psd_uv_per_sqrtHz * 1e-6) ** 2
    f = np.logspace(0, 6, 2000)
    omega = 2 * np.pi * f

    # RC 滤波器增益
    h_rc = 1 / np.sqrt(1 + (omega * r_ohm * c_f) ** 2)
    psd_filtered = psd_v2_per_Hz * h_rc**2

    # 在 ADC 有效带宽内积分噪声
    df = np.diff(f)
    psd_mid = (psd_filtered[1:] + psd_filtered[:-1]) / 2
    valid = f[1:] <= adc_bw_hz
    noise_power = np.sum(psd_mid[valid] * df[valid])
    noise_rms_v = np.sqrt(noise_power)
    noise_rms_uv = noise_rms_v * 1e6

    # 满量程信号电压(RMS)
    v_signal_rms = (
        adc_vref / np.sqrt(2) if full_scale else adc_vref / 4
    )  # conservatively 25%
    snr_db = 20 * np.log10(v_signal_rms / noise_rms_v)
    enob = (snr_db - 1.76) / 6.02

    if plot:
        plt.figure(figsize=(8, 5))
        plt.loglog(f, np.sqrt(psd_filtered) * 1e6, label="Filtered REF Noise (µV/√Hz)")
        plt.axvline(
            adc_bw_hz,
            color="orange",
            linestyle="--",
            label=f"ADC BW = {adc_bw_hz/1e3:.0f} kHz",
        )
        plt.axvline(
            1 / (2 * np.pi * r_ohm * c_f), color="gray", linestyle="--", label="RC -3dB"
        )
        plt.grid(True, which="both")
        plt.xlabel("Frequency (Hz)")
        plt.ylabel("Noise Density (µV/√Hz)")
        plt.title(
            f"REF + RC Filtered Noise → SNR = {snr_db:.1f} dB, ENOB = {enob:.2f} bits"
        )
        plt.legend()
        plt.tight_layout()
        plt.show()

    return noise_rms_uv, snr_db, enob


compute_snr_enob_for_ref(
    ref_psd_uv_per_sqrtHz=0.1,  # 参考源噪声密度
    r_ohm=10,  # RC 电阻
    c_f=10e-6,  # RC 电容
    adc_vref=2.5,  # ADC 满量程
    adc_bw_hz=10e3,  # ADC 有效带宽
)

https://www.analog.com/media/en/technical-documentation/data-sheets/ltc6655-6655ln.pdf

高频 + 高 ENOB 采样 → 需滤除参考源噪声 → 要求 RC 滤波 + 参考源自身 SNR ≥ 140 dB

你用了一个非常牛的 ADC,比如 24-bit、速度又快,想测得又准又细(比如微伏、皮安级别的信号)。

但你有没有想过:“这个 ADC 是参照哪一个电压做比较的?”

答案是:参考电压(REF)!

也就是说即使你有世界上最灵敏的尺子(ADC),但如果你“拿的基准点”在抖动(参考源有噪声),那也没用!

想实现高频率下高精度采样(比如 ENOB > 22,SNR > 140 dB),那么参考源必须非常非常稳定,也就是说,它的噪声必须极低!

要想压低参考源的噪声,就得:

选一颗低噪声的参考芯片(比如 LTC6655、ADR1000 等);在输出端加一个 RC 滤波器(像是减震器,阻挡高频噪声);

整体要做到:

噪声滤波器处理之后的总噪声

假设参考源输出有 5 µV 的 RMS 噪声,那么对于 ±2.5 V 满量程 ADC:

不够!你必须再降噪,靠滤波器或换更好的 REF

参考电压(REF)直接参与 ADC 量化

对于 24-bit 输出(如 LTC2500 SDOB):

LSB ≈ 0.6 µV(@ 5 V REF)

如果 REF 自身噪声超过 1–2 LSB(即几 µV RMS),会直接破坏有效位数(ENOB)

“参考源 SNR ≥ 140 dB” 如何理解?

若目标 ENOB = 21 bit,对应:

理论

加上 margin(滤波余量、谐波、PSRR):

参考源需


如何实现高有效位:RC滤波器 + 超低噪声 REF

当然了这个是有点苛刻的,贵死了:

ADR1000

实际上就算啥这颗都噪音有点超!

参数

数值

说明

输出电压噪声密度(typ.)

32 nV/√Hz @ 1 kHz

中频段的典型噪声密度

0.1 Hz – 10 Hz 低频噪声

0.25 µV p-p typ.

超低频 flicker 区间,总体漂移范围

长时间稳定性

< 2 ppm/1000 hrs

用于精密 ADC 时非常重要

32 nV/√Hz 在业界属于非常低噪声等级,与 LTZ1000、ADR1000A 同等级;

假设带宽为 10 kHz 时,总噪声为:

比如连接 24-bit ADC(LSB ≈ 0.15 µV)时会造成约 20 个码抖动,因此建议搭配 RC 滤波器衰减。

ADR1000 是目前顶级的电压参考,适合 ≥ 20-bit 精密 ADC 应用;若用于高 ENOB(如 22-bit+)的 ADC,仍建议加 >20 dB 的低通滤波器。

我们想要的数据是这样的:

参数

推荐值

噪声密度

< 0.1 µV/√Hz

RMS 噪声

< 2–5 µV

温漂

< 2 ppm/°C

器件

LTC6655-5、LM399、ADR1000、LT1236A

RC 滤波器设计:

目标:带宽限制在 ADC 输出带宽之下;

若 fBW = 10 kHz,则:

REF: SNR ≥ 135–140 dB

REF :噪声密度 < 0.1 µV/√Hz

滤波器带宽: < ADC 带宽(≈ 0.45 × fout)

参考源 + RC 滤波器(10 Ω + 10 µF) 的输出噪声频谱(PSD)及其总噪声影响

RC 滤波器 10 Ω + 10 µF

RC 截止频率

模拟 ADC 带宽 10 kHz

橙色线:滤波后参考电压的等效噪声密度(单位 µV/√Hz);

灰色虚线:RC 滤波器的 −3dB 截止频率;

橙色虚线:ADC 等效带宽(如 DF = 64 时);

面积的平方根 = 总 RMS 噪声 ≈ 5.00 µV

这说明:即使使用 非常低噪声的 0.1 µV/√Hz 参考源;如果 RC 滤波器截止频率仍高于 ADC 带宽;那么噪声仍有 5 µV 量级,会限制高 ENOB 表现(< 22bit);

若目标是:ENOB ≥ 23bit(SNR ≥ 140 dB);则总 RMS 噪声需 < 2.5 µV

还可以使用这些方法,但是我觉得是降不下去了:

LTC6655

方式

效果

提高电容(如 100 µF)

降低带宽,进一步压低噪声

降低噪声密度(如 0.05 µV/√Hz)

降低整个 PSD

使用 π 滤波器(R-C-R)

增强高频衰减

使用带限 REF 芯片(如 LTC6655)

限制 1/f 噪声影响

参考电压输出的总噪声大约是:5 µV RMS

这意味着你的 ADC 最多能保持大约 22–23 位有效位(ENOB),再高就容易被参考源本身的噪声拖后腿。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
import matplotlib.pyplot as plt


def compute_snr_enob_for_ref(
    ref_psd_uv_per_sqrtHz=0.1,
    r_ohm=10,
    c_f=10e-6,
    adc_vref=2.5,
    adc_bw_hz=10e3,
    full_scale=True,
    plot=True,
):
    """
    计算 REF+RC 滤波器组合下的总噪声、SNRENOB

    参数:
    - ref_psd_uv_per_sqrtHz: 参考源噪声密度(单位 µV/√Hz)
    - r_ohm: 滤波器电阻 R(Ω)
    - c_f: 滤波器电容 CF- adc_vref: ADC 满量程电压(V- adc_bw_hz: ADC 带宽(Hz)
    - full_scale: 输入是否占满满量程
    - plot: 是否绘图显示 PSD

    返回:
    - total_noise_uv: 总输出 RMS 噪声(µV- snr_db: 信噪比(dB)
    - enob: 有效位数(bit)
    """

    psd_v2_per_Hz = (ref_psd_uv_per_sqrtHz * 1e-6) ** 2
    f = np.logspace(0, 6, 2000)
    omega = 2 * np.pi * f

    # RC 滤波器增益
    h_rc = 1 / np.sqrt(1 + (omega * r_ohm * c_f) ** 2)
    psd_filtered = psd_v2_per_Hz * h_rc**2

    # 在 ADC 有效带宽内积分噪声
    df = np.diff(f)
    psd_mid = (psd_filtered[1:] + psd_filtered[:-1]) / 2
    valid = f[1:] <= adc_bw_hz
    noise_power = np.sum(psd_mid[valid] * df[valid])
    noise_rms_v = np.sqrt(noise_power)
    noise_rms_uv = noise_rms_v * 1e6

    # 满量程信号电压(RMS)
    v_signal_rms = (
        adc_vref / np.sqrt(2) if full_scale else adc_vref / 4
    )  # conservatively 25%
    snr_db = 20 * np.log10(v_signal_rms / noise_rms_v)
    enob = (snr_db - 1.76) / 6.02

    if plot:
        plt.figure(figsize=(8, 5))
        plt.loglog(f, np.sqrt(psd_filtered) * 1e6, label="Filtered REF Noise (µV/√Hz)")
        plt.axvline(
            adc_bw_hz,
            color="orange",
            linestyle="--",
            label=f"ADC BW = {adc_bw_hz/1e3:.0f} kHz",
        )
        plt.axvline(
            1 / (2 * np.pi * r_ohm * c_f), color="gray", linestyle="--", label="RC -3dB"
        )
        plt.grid(True, which="both")
        plt.xlabel("Frequency (Hz)")
        plt.ylabel("Noise Density (µV/√Hz)")
        plt.title(
            f"REF + RC Filtered Noise → SNR = {snr_db:.1f} dB, ENOB = {enob:.2f} bits"
        )
        plt.legend()
        plt.tight_layout()
        plt.show()

    return noise_rms_uv, snr_db, enob


compute_snr_enob_for_ref(
    ref_psd_uv_per_sqrtHz=0.1,  # 参考源噪声密度
    r_ohm=10,  # RC 电阻
    c_f=10e-6,  # RC 电容
    adc_vref=2.5,  # ADC 满量程
    adc_bw_hz=10e3,  # ADC 有效带宽
)

https://www.analog.com/media/en/technical-documentation/data-sheets/ltc6655-6655ln.pdf

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-06-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
数据结构常见的八大排序算法
前言 八大排序,三大查找是《数据结构》当中非常基础的知识点,在这里为了复习顺带总结了一下常见的八种排序算法。 常见的八大排序算法,他们之间关系如下: 他们的性能比较: 下面,利用Python分别将他们进行实现。 直接插入排序 算法思想: 直接插入排序的核心思想就是:将数组中的所有元素依次跟前面已经排好的元素相比较,如果选择的元素比已排序的元素小,则交换,直到全部元素都比较过。 因此,从上面的描述中我们可以发现,直接插入排序可以用两个循环完成: 第一层循环:遍历待比较的所有数组元素 第二层循环
小莹莹
2018/04/23
1.2K0
数据结构常见的八大排序算法
八大排序算法总结与java实现
概述 因为健忘,加上对各种排序算法理解不深刻,过段时间面对排序就蒙了。所以决定对我们常见的这几种排序算法进行统一总结。首先罗列一下常见的十大排序算法: 请点击此处输入图片描述 我们讨论的这八大排序算法的实现可以参考我的Github:SortAlgorithms,其中也包括了排序测试模块[Test.java]和排序算法对比模块[Bench.java],大家可以试运行。 它们都属于内部排序,也就是只考虑数据量较小仅需要使用内存的排序算法,他们之间关系如下: 请点击此处输入图片描述 一、直接插入排序(In
企鹅号小编
2018/01/18
1.1K0
八大排序算法总结与java实现
算法 | 数据结构常见的八大排序算法
01 前言 八大排序,三大查找是《数据结构》当中非常基础的知识点,在这里为了复习顺带总结了一下常见的八种排序算法。 常见的八大排序算法,他们之间关系如下: 排序算法.png 他们的性能比较:
用户1332428
2018/03/08
1K0
算法 | 数据结构常见的八大排序算法
八大排序算法详解_面试+提升
八大排序算法详解_面试+提升 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。 我们这里说说八大
Java帮帮
2018/03/15
1.4K0
八大排序算法详解_面试+提升
八大排序算法
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hguisu/article/details/7776068
用户2965768
2019/06/20
7590
八大排序算法
【数据结构】七大排序算法
排序的相关概念 排序的分类 根据在排序过程中带排序的记录是否全部被放置在内存中,排序分为: 内排序 外排序 1.内排序 内排序是在排序整个过程中,带排序的所有记录全部放置在内存中。 影响内排序的主要因素: 时间性能。(主要受比较和移动两种操作的影响) 辅助空间。 算法的复杂性。 内排序的分类 根据排序过程中借助的主要操作,内排序分为: 插入排序 交换排序 选择排序 归并排序 2.外排序 外排序是由于排序的记录个数太多,不能同时放置在内存中,整个排序过程需要在内外存之间多次交换数据才能进行。 按照算法的复杂
我就是马云飞
2018/02/05
1.2K0
【数据结构】七大排序算法
八大排序算法
(1)基本思想:算法先将要排序的一组数按某个增量d(n/2,n为要排序数的个数)分成若干组,每组中记录的下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。当增量减到1时,进行直接插入排序后,排序完成。
哲洛不闹
2018/09/19
3970
八大排序算法
八大排序算法
​ 八大排序算法是面试经常考到的,尤其是快排,希尔排序和归并也是经常会让写代码的题目,其实只要用一句话说明了他们的原理我们写起代码就没那么困难。 冒泡排序 思想:有 n 个数我们就进行 n-1 趟排序,每一趟我们都选取最大的一个数放到已经排序的位置即可。 伪代码:两个 For 循环,外层表示要进行的趟数,内层则是找出最大的数,找最大的数的方法就是比较、交换。 时间复杂度:O(n2) 空间复杂度:O(n) 代码: package Sorting; import org.junit.jupiter.ap
lwen
2018/04/17
9370
八大排序算法
面试中的 10 大排序算法总结
查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。所以在面试中经常会问到排序算法及其相关的问题。但万变不离其宗,只要熟悉了思想,灵活运用也不是难事。一般在面试中最常考的是快速排序和归并排序,并且经常有面试官要求现场写出这两种排序的代码。对这两种排序的代码一定要信手拈来才行。还有插入排序、冒泡排序、堆排序、基数排序、桶排序等。面试官对于这些排序可能会要求比较各自的优劣、各种算法的思想及其使用场景。还有要会分析算法的时间和空间复杂度。通常查找和排序算法的考察是面试的开始,如果这些问题回答不好,估计面试官都没有继续面试下去的兴趣都没了。所以想开个好头就要把常见的排序算法思想及其特点要熟练掌握,有必要时要熟练写出代码。
哲洛不闹
2018/09/18
1.2K0
面试中的 10 大排序算法总结
超全 | 七大排序算法图文详解
原文:https://www.jianshu.com/p/876931436177
攻城狮的那点事
2020/01/14
6540
超全 | 七大排序算法图文详解
排序算法 归纳总结
一、直接插入排序、冒泡排序和简单选择排序是最基本的排序方法,它们主要用于元素个数n(n<10000)不是很大的情形。
week
2018/08/24
6190
八种排序算法
来源:juejin.im/post/5cb6b8f551882532c334bcf2
Java团长
2019/08/31
1.1K0
Python数据结构与算法 实现八大经典排序算法
在面试题中可能会遇到排序算法,毕竟作为程序员内功心法,熟练掌握排序算法是很重要的,本文总结了八大经典排序算法的 Python 实现。排序算法是《数据结构与算法》中最基本的算法之一。排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。
叶庭云
2021/12/01
3590
Python数据结构与算法  实现八大经典排序算法
我的软考之路(六)——数据结构与算法(4)之八大排序
排序是编程的基础,在程序中会经常使用,好的排序方法可以帮助你提高程序运行的效率,所以学好排序,打好基础,对于程序的优化会手到擒来。无论你的技术多么强,如果没有基础也强不到哪去。
程序猿小亮
2021/01/28
6870
八大排序算法的 Python 实现!
今天CoCo酱给大家介绍一下关于八大排序算法的Python实现,对八大排序算法进行详细描述和代码实现,下面我们一起来看一下吧。 1、插入排序 描述: 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素除外(让数组多一个空间才有插入的位置),而第二部分就只包含这一个元素(即待插入元素)。在第一部分排序完成后,
企鹅号小编
2018/02/01
8970
八大排序算法的 Python 实现!
【Java系列】八大排序算法
时隔4年,我终于把八大排序算法梳理了一遍,比起大学时零零散散的学习,现在就是一个大规范,当然代码是从优秀小伙伴那里Ctrl+C过来的,就是当我复习了一遍好多年没考过的题吧,哈哈哈。
用户9913368
2022/08/13
2180
【Java系列】八大排序算法
【愚公系列】软考中级-软件设计师 022-数据结构(排序算法)
直接插入排序是一种简单直观的排序算法,它的思想是将一个序列分为有序和无序两部分,每次从无序部分中取出一个元素,插入到有序部分的正确位置上,直到整个序列有序为止。
愚公搬代码
2024/02/03
3340
十大经典排序算法动图演示+Python实现
而今天这篇文章,转自 Github 上一个项目,此项目整理了 10 个常见排序算法的原理、演示和多种语言的实现。这里我们摘录其中 Python 的实现,分享给大家。
Crossin先生
2020/01/16
1.4K0
十大经典排序算法动图演示+Python实现
八大排序算法(java实现) 冒泡排序 快速排序 堆排序 归并排序 等
一、直接插入 - 1.基本思路 - 2.代码实现 - 3.时间复杂度和空间复杂度二、希尔排序 - 1.基本思路 - 2.代码实现 - 3.时间复杂度和空间复杂度三、简单选择 - 1.基本思路 - 2.代码实现 - 3.时间复杂度和空间复杂度四、堆排序 - 1.基本思路 - 2.代码实现 - 3.时间复杂度和空间复杂度五、冒泡排序 - 1.基本思路 - 2.代码实现 - 3.时间复杂度和空间复杂度六、快速排序 - 1.基本思路 - 2.代码实现 - 3.时间复杂度和空间复杂度七、归并排序 - 1.基本思路 - 2.代码实现 - 3.时间复杂度和空间复杂度八、基数排序 - 1.基本思路 - 2.代码实现 - 3.时间复杂度和空间复杂度总结
用户7886150
2020/12/04
2760
十大经典排序算法(Python代码实现)
排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括:
Python数据科学
2018/08/06
2.4K0
十大经典排序算法(Python代码实现)
相关推荐
数据结构常见的八大排序算法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验