STL 中 sort 函 数 用 法 简 介 做 ACM 题 的 时 候 , 排 序 是 一 种 经 常 要 用 到 的 操 作
如 果 每 次 都 自 己 写 个 冒 泡 之 类 的 O(n^2) 排 序 , 不 但 程 序 容 易 超 时 , 而 且 浪 费 宝 贵 的 比 赛 时 间 , 还 很 有 可 能 写 错
STL 里 面 有 个 sort 函 数 , 可 以 直 接 对 数 组 排 序 , 复 杂 度 为 n*log2(n)
使 用 这 个 函 数 , 需 要 包 含 头 文 件 #include
这 个 函 数 可 以 传 两 个 参 数 或 三 个 参 数
第 一 个 参 数 是 要 排 序 的 区 间 首 地 址 , 第 二 个 参 数 是 区 间 尾地 址 的 下 一 地 址
也 就 是 说 , 排 序 的 区 间 是 [a,b)
简 单 来 说 , 有 一 个 数 组 int a[100] , 要对 从 a[0] 到 a[99] 的 元 素 进 行 排 序 , 只 要 写 sort(a,a+100) 就 行 了 , 默 认 的 排 序 方 式 是 升序
拿 我 出 的 “ AC 的 策 略 ” 这 题 来 说 , 需 要 对 数 组 t 的 第 0 到 len-1 的 元 素 排 序 , 就 写 sort(t,t+len); 对 向 量 v 排 序 也 差 不 多 , sort(v
begin(),v
end()); 排 序 的 数 据 类 型 不 局 限 于 整 数 , 只 要 是 定 义 了 小 于 运算的 类 型 都 可 以 , 比 如 字符串类 string
如 果 是 没有 定 义 小 于 运算的 数 据 类 型 ,或 者想改变排 序 的 顺序 ,就 要 用 到 第 三 参 数 ——比 较函 数