算法
DarinWang
自学者, 正在被各个方面折磨.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
剑指Offer : 面试题 3 - 数组中重复的数字
剑指Offer : 面试题 3 - 数组中重复的数字 题目 找出数组中重复的数字 在一个长度为 nnn 的数组里的所有的数字都在 n−1n-1n−1 的范围内. 数组中某些数字是重复的, 但不知道有几个数字重复了, 也不知道每个数字重复了几次. 请找出数组中任意一个重复的数字. 例, 输入: {2, 3, 1, 0, 2, 5, 3} 输出: 2 或 3 我的解法 思路一 创建一个长度为 nnn 数组 aux, 下标 iii 表示数字 iii 出现过的次数. 遍历数组, 如果 aux[i] 的值原创 2020-07-01 16:33:55 · 167 阅读 · 0 评论 -
算法第四版 第二章 快速排序
5 快速排序 5.1 原理 快速排序是一种 分治 的排序算法. 它将一个数组分成两个子数组, 将两部分独立地排序. 快速排序和归并排序是互补的: 归并排序将数组分成两个子数组分别排序, 并将有序的子数组归并以将整个数组排序; 快速排序将数组排序的方式则是当两个子数组都有序时整个数组也就自然有序了. 在第一种情况中, 递归调用发生在处理整个数组之前; 在第二种情况中, 递归调用发生在处理整个数组之后. 在归并排序中, 一个数组被等分为两半; 在快速排序中, 切分 (partition) 的位置取决于数组的内原创 2020-06-28 21:00:04 · 269 阅读 · 0 评论 -
算法第四版 第二章 归并排序
4 归并排序 merge sort 4.1 原理 需要将一个数组排序, 可以先 (递归地) 将它分成两半分别排序, 然后将结果归并起来. 4.1.1 优点 能够保证将任意长度 NNN 的数组排序所需时间和 NlogNN\log NNlogN 成正比. 4.1.2 缺点 所需的额外空间和 NNN 成正比. 4.2 归并实现 public static void merge(Comparable[] a, int lo, int mid, int hi) { int i=lo, j = mid+1;原创 2020-06-28 09:52:44 · 211 阅读 · 0 评论 -
算法第四版 第二章 初级排序算法
第二章 排序 1 总览 1.1 排序算法的模板 public class Example { public static void sort(Comparable[] a) { /*排序代码*/ } private static boolean less(Comparable v, Comparable w) { return v.compareTo(w)<0; } private static void exch(Comparable[] a, int i, int j) { C原创 2020-06-27 15:56:51 · 298 阅读 · 0 评论
分享