
算法
排序算法
leoufung
Linux Kernel,Virtualization
展开
-
排序算法的复杂度
冒泡 排序 算法 的 时间 复杂度 是 O( n^ 2)。 选择 排序 算法 的 时间 复杂度 是 O( n^ 2)。 插入 排序 算法 的 时间 复杂度 是 O( n^ 2)。 快速 排序 是 不稳 定的, 最理想 情况下 的 算法 时间 复杂度 是 O( nlog2n), 最坏 是 O( n^ 2)。 堆 排序 算法 的 时间 复杂度 是 O( nlogn)。 归并 排序 算法 的 ...原创 2020-02-15 16:44:53 · 161 阅读 · 0 评论 -
排序算法的选择
选择 排序 算法 的 时候, 需要 考虑 以下 几点。数据 的 规模; 数据 的 类型; 数据 已有 的 顺序。 一般来说, 当 数据 规模 较小 时, 应选 择 直接 插入 排序 或 冒泡 排序。 任何 排序 算法 在 数据 量小 时 基本 体现 不出 差距。 考虑 数据 的 类型, 比如 全部 是 正 整数 时, 应该 考虑 使用 桶 排序。 考虑 数...原创 2020-02-15 16:33:57 · 1165 阅读 · 0 评论 -
基数桶排序算法
算法原理基数 排序 是 箱 排序 的 改进 和 推广。 箱 排序 也称 桶 排序( Bucket Sort), 其 基本 思想 是: 设置 若干个 箱子, 依次 扫描 待 排序 的 记录 R[ 0], R[ 1],…, R[ n- 1], 把 关键字 等于 k 的 记录 全都 装入 到 第 k 个 箱子 里( 分配), 然后 按序 号 依次 将 各 非 空的 箱子 首尾 连接 起来( 收集)。...原创 2020-02-15 15:56:22 · 268 阅读 · 0 评论 -
双路归并排序法(自上向下)
算法原理 归并排序(Merge Sort)是利用“归并” 技术来进行排序。归并是指将若干个已排序的 子 文件 合并 成 一个 有序 的 文件。 两路 归并 算法 的 基本 思路: 设 两个 有序 的 子 文件( 相当于 输入 堆) 放在 同一 向量 中 相邻 的 位置 上: A[ low… m], a[ m+ 1… high], 先 将它 们 合并 到 一个 局部 的 暂存 向...原创 2020-02-14 23:59:01 · 1096 阅读 · 0 评论 -
堆排序算法
算法原理堆排序定义: n 个 序列 Al, A2,…, An 称为 堆, 有 下面 两种 不同 类型 的 堆。 小 根 堆: 所有 子 结点 都 大于 其父 节点, 即 Ai ≤ A2i 且 Ai ≤ A2i+ 1。 大 根 堆: 所有 子 结点 都 小于 其父 节点, 即 Ai ≥ A2i 且 Ai ≥ A2i+ 1。(数组是从0开始计算的,为了平衡考虑,使用 A2i ...原创 2020-02-14 18:48:56 · 456 阅读 · 0 评论 -
希尔插入排序法 -- C语言
草稿笔记代码实现代码实现需要十分注意的一点,是判断的时候需要 j >= 0; 而不是 j >0; 否则对第0个元素就没有排序了#include <stdio.h>#include <stdlib.h>#define SUCCESS 0#define PARAM_ERR -1int ShellSort(int * array, i...原创 2020-02-13 00:05:09 · 790 阅读 · 0 评论 -
插入排序实现
实现插入排序#include <stdio.h>#include <stdlib.h>#define SUCCESS 0#define PARAM_ERR -1int InsertSort(int * array, int size){ if(NULL == array){ printf("%s para error", __func__); ...原创 2020-02-12 20:20:20 · 165 阅读 · 0 评论 -
选择排序法
算法原理直接 选择 排序 的 基本 思想: n 个 记录 的 直接 选择 排序 可 经过 n- 1 趟 直接 选择 排序 得到 有序 结果。(1) 初始 状态: 无序 区 为 A[ 1... n], 有序 区 为 空。(2) 第 1 趟 排序: 在 无序 区 A[ 1... n] 中选 出 最小 的 记录 A[ k], 将它 与 无序 区 的 第 1 个 记录 A[ 1] 交换, 使 ...原创 2020-02-13 19:36:51 · 131 阅读 · 0 评论 -
快速排序法
算法原理快速 排序 是 C. R. A. Hoare 于 1962 年 提出 的 一种 划分 交换 排序。 它 采用 了 一种 分 治 的 策略, 通常 称 其为 分 治 法( Divide- and- ConquerMethod)。分 治 法 的 基本 思想 是: 将 原 问题 分解 为 若干个 规模 更小 但 结构 与 原 问题 相 似的 子 问题。 递归 地 解 这些 子 问题, 然...原创 2020-02-13 16:59:27 · 144 阅读 · 0 评论 -
冒泡排序法
算法原理冒泡 排序 的 方法 为: 将被 排序 的 记录 数组 A[ 1... n] 垂直 排列, 每个 记录 A[ i] 看作 重量 为 A[ i] 气泡。 根据 轻 气泡 不 能在 重 气泡 之下 的 原则, 从下 往上 扫描 数组 A: 凡 扫描 到 违反 本 原则 的 轻 气泡, 就 使其 向上“ 飘浮”。 如此 反复 进行, 直到 最后 任何 两个 气泡 都是 轻者 在上、 重者 在...原创 2020-02-13 15:04:38 · 209 阅读 · 0 评论