
算法
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 · 146 阅读 · 0 评论 -
算法第四版 第二章 快速排序
5 快速排序5.1 原理快速排序是一种 分治 的排序算法. 它将一个数组分成两个子数组, 将两部分独立地排序.快速排序和归并排序是互补的:归并排序将数组分成两个子数组分别排序, 并将有序的子数组归并以将整个数组排序;快速排序将数组排序的方式则是当两个子数组都有序时整个数组也就自然有序了.在第一种情况中, 递归调用发生在处理整个数组之前;在第二种情况中, 递归调用发生在处理整个数组之后.在归并排序中, 一个数组被等分为两半;在快速排序中, 切分 (partition) 的位置取决于数组的内原创 2020-06-28 21:00:04 · 239 阅读 · 0 评论 -
算法第四版 第二章 归并排序
4 归并排序 merge sort4.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 · 182 阅读 · 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 · 274 阅读 · 0 评论