Hello 算法 1.0.0b4 Java版某些算法的时间复杂度不是固定的,而是与输入数据的分布有关。例如,假设输入一个长度为 ? 的数组 nums ,其中 nums 由从 1 至 ? 的数字组成,但元素顺序是随机打乱的;算法的任务是返回元素 1 的索引。我们可 以得出以下结论: ‧ 当 nums = [?, ?, ..., 1] ,即当末尾元素是 1 时,需要完整遍历数组,此时达到 最差时间复杂度 ?(?) 。 ‧ 当 nums = [1, int[n]; for (int i = 0; i < n; i++) { res[i] = nums[i]; } return res; } /* 查找数组 nums 中数字 1 所在索引 */ int findOne(int[] nums) { for (int i = 0; i < nums.length; i++) { // 当元素 1 在数组头部时,达到最佳时间复杂度 O(1) 度」可以体现算法在随机输入数据下 的运行效率,用 Θ 记号来表示。 对于部分算法,我们可以简单地推算出随机数据分布下的平均情况。比如上述示例,由于输入数组是被打乱 的,因此元素 1 出现在任意索引的概率都是相等的,那么算法的平均循环次数则是数组长度的一半 ? 2 ,平均 时间复杂度为 Θ(? 2) = Θ(?) 。 但在实际应用中,尤其是较为复杂的算法,计算平均时间复杂度比较困难,因为很难简便地分析出在数据分0 码力 | 342 页 | 27.39 MB | 1 年前3
Hello 算法 1.1.0 Java版算法的时间效率往往不是固定的,而是与输入数据的分布有关。假设输入一个长度为 ? 的数组 nums ,其中 nums 由从 1 至 ? 的数字组成,每个数字只出现一次;但元素顺序是随机打乱的,任务目标是返回元素 1 的 索引。我们可以得出以下结论。 ‧ 当 nums = [?, ?, ..., 1] ,即当末尾元素是 1 时,需要完整遍历数组,达到最差时间复杂度 ?(?) 。 ‧ 当 nums = [1, ?, ? hello‑algo.com 41 for (int i = 0; i < n; i++) { res[i] = nums[i]; } return res; } /* 查找数组 nums 中数字 1 所在索引 */ int findOne(int[] nums) { for (int i = 0; i < nums.length; i++) { // 当元素 1 在数组头部时,达到最佳时间复杂度 O(1) 杂度可以体现算法在随机输入数据下的 运行效率,用 Θ 记号来表示。 对于部分算法,我们可以简单地推算出随机数据分布下的平均情况。比如上述示例,由于输入数组是被打乱 的,因此元素 1 出现在任意索引的概率都是相等的,那么算法的平均循环次数就是数组长度的一半 ?/2 ,平 均时间复杂度为 Θ(?/2) = Θ(?) 。 但对于较为复杂的算法,计算平均时间复杂度往往比较困难,因为很难分析出在数据分布下的整体数学期望。0 码力 | 378 页 | 18.47 MB | 1 年前3
Hello 算法 1.0.0b2 Java版某些算法的时间复杂度不是恒定的,而是与输入数据的分布有关。举一个例子,输入一个长度为 ? 数组 nums , 其中 nums 由从 1 至 ? 的数字组成,但元素顺序是随机打乱的;算法的任务是返回元素 1 的索引。我们可以得 出以下结论: ‧ 当 nums = [?, ?, ..., 1],即当末尾元素是 1 时,则需完整遍历数组,此时达到 最差时间复杂度 ?(?) ; ‧ 当 nums = [1, int[n]; for (int i = 0; i < n; i++) { res[i] = nums[i]; } return res; } /* 查找数组 nums 中数字 1 所在索引 */ int findOne(int[] nums) { for (int i = 0; i < nums.length; i++) { // 当元素 1 在数组头部时,达到最佳时间复杂度 O(1) 的 运行效率,用 Θ 记号(Theta Notation)来表示。 对于部分算法,我们可以简单地推算出随机数据分布下的平均情况。比如上述示例,由于输入数组是被打乱 的,因此元素 1 出现在任意索引的概率都是相等的,那么算法的平均循环次数则是数组长度的一半 ? 2 ,平均 时间复杂度为 Θ(? 2) = Θ(?) 。 但在实际应用中,尤其是较为复杂的算法,计算平均时间复杂度比较困难,因为很难简便地分析出在数据分布0 码力 | 197 页 | 15.72 MB | 1 年前3
Hello 算法 1.0.0 Java版算法的时间效率往往不是固定的,而是与输入数据的分布有关。假设输入一个长度为 ? 的数组 nums ,其中 nums 由从 1 至 ? 的数字组成,每个数字只出现一次;但元素顺序是随机打乱的,任务目标是返回元素 1 的 索引。我们可以得出以下结论。 ‧ 当 nums = [?, ?, ..., 1] ,即当末尾元素是 1 时,需要完整遍历数组,达到最差时间复杂度 ?(?) 。 ‧ 当 nums = [1, ?, ? hello‑algo.com 41 for (int i = 0; i < n; i++) { res[i] = nums[i]; } return res; } /* 查找数组 nums 中数字 1 所在索引 */ int findOne(int[] nums) { for (int i = 0; i < nums.length; i++) { // 当元素 1 在数组头部时,达到最佳时间复杂度 O(1) 复杂度可以体现算法在随机输入数据下的 运行效率,用 Θ 记号来表示。 对于部分算法,我们可以简单地推算出随机数据分布下的平均情况。比如上述示例,由于输入数组是被打乱 的,因此元素 1 出现在任意索引的概率都是相等的,那么算法的平均循环次数就是数组长度的一半 ?/2 ,平 均时间复杂度为 Θ(?/2) = Θ(?) 。 但对于较为复杂的算法,计算平均时间复杂度往往比较困难,因为很难分析出在数据分布下的整体数学期望。0 码力 | 376 页 | 17.59 MB | 1 年前3
Hello 算法 1.0.0b5 Java版算法的时间效率往往不是固定的,而是与输入数据的分布有关。假设输入一个长度为 ? 的数组 nums ,其中 nums 由从 1 至 ? 的数字组成,每个数字只出现一次;但元素顺序是随机打乱的,任务目标是返回元素 1 的 索引。我们可以得出以下结论。 ‧ 当 nums = [?, ?, ..., 1] ,即当末尾元素是 1 时,需要完整遍历数组,达到最差时间复杂度 ?(?) 。 ‧ 当 nums = [1, ?, ? int[n]; for (int i = 0; i < n; i++) { res[i] = nums[i]; } return res; } /* 查找数组 nums 中数字 1 所在索引 */ int findOne(int[] nums) { for (int i = 0; i < nums.length; i++) { // 当元素 1 在数组头部时,达到最佳时间复杂度 O(1) 复杂度分析 hello‑algo.com 39 用 Θ 记号来表示。 对于部分算法,我们可以简单地推算出随机数据分布下的平均情况。比如上述示例,由于输入数组是被打乱 的,因此元素 1 出现在任意索引的概率都是相等的,那么算法的平均循环次数就是数组长度的一半 ?/2 ,平 均时间复杂度为 Θ(?/2) = Θ(?) 。 但对于较为复杂的算法,计算平均时间复杂度往往是比较困难的,因为很难分析出在数据分布下的整体数学0 码力 | 376 页 | 30.69 MB | 1 年前3
Hello 算法 1.0.0b1 Java版某些算法的时间复杂度不是恒定的,而是与输入数据的分布有关。举一个例子,输入一个长度为 ? 数组 nums , 其中 nums 由从 1 至 ? 的数字组成,但元素顺序是随机打乱的;算法的任务是返回元素 1 的索引。我们可以得 出以下结论: ‧ 当 nums = [?, ?, ..., 1],即当末尾元素是 1 时,则需完整遍历数组,此时达到 最差时间复杂度 ?(?) ; ‧ 当 nums = [1, int[n]; for (int i = 0; i < n; i++) { res[i] = nums[i]; } return res; } /* 查找数组 nums 中数字 1 所在索引 */ int findOne(int[] nums) { for (int i = 0; i < nums.length; i++) { // 当元素 1 在数组头部时,达到最佳时间复杂度 O(1) 的 运行效率,用 Θ 记号(Theta Notation)来表示。 对于部分算法,我们可以简单地推算出随机数据分布下的平均情况。比如上述示例,由于输入数组是被打乱 的,因此元素 1 出现在任意索引的概率都是相等的,那么算法的平均循环次数则是数组长度的一半 ? 2 ,平均 时间复杂度为 Θ(? 2) = Θ(?) 。 但在实际应用中,尤其是较为复杂的算法,计算平均时间复杂度比较困难,因为很难简便地分析出在数据分布0 码力 | 186 页 | 14.71 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Java 版算法的时间效率往往不是固定的,而是与输入数据的分布有关。假设输入一个长度为 ? 的数组 nums ,其中 nums 由从 1 至 ? 的数字组成,每个数字只出现一次;但元素顺序是随机打乱的,任务目标是返回元素 1 的 索引。我们可以得出以下结论。 ‧ 当 nums = [?, ?, ..., 1] ,即当末尾元素是 1 时,需要完整遍历数组,达到最差时间复杂度 ?(?) 。 ‧ 当 nums = [1, ?, ? hello‑algo.com 41 for (int i = 0; i < n; i++) { res[i] = nums[i]; } return res; } /* 查找数组 nums 中数字 1 所在索引 */ int findOne(int[] nums) { for (int i = 0; i < nums.length; i++) { // 当元素 1 在数组头部时,达到最佳时间复杂度 O(1) 杂度可以体现算法在随机输入数据下的 运行效率,用 Θ 记号来表示。 对于部分算法,我们可以简单地推算出随机数据分布下的平均情况。比如上述示例,由于输入数组是被打乱 的,因此元素 1 出现在任意索引的概率都是相等的,那么算法的平均循环次数就是数组长度的一半 ?/2 ,平 均时间复杂度为 Θ(?/2) = Θ(?) 。 但对于较为复杂的算法,计算平均时间复杂度往往比较困难,因为很难分析出在数据分布下的整体数学期望。0 码力 | 379 页 | 18.48 MB | 10 月前3
Hello 算法 1.2.0 繁体中文 Java 版演算法的時間效率往往不是固定的,而是與輸入資料的分佈有關。假設輸入一個長度為 ? 的陣列 nums ,其 中 nums 由從 1 至 ? 的數字組成,每個數字只出現一次;但元素順序是隨機打亂的,任務目標是返回元素 1 的索引。我們可以得出以下結論。 ‧ 當 nums = [?, ?, ..., 1] ,即當末尾元素是 1 時,需要完整走訪陣列,達到最差時間複雜度 ?(?) 。 ‧ 當 nums = [1, ?, ? hello‑algo.com 41 for (int i = 0; i < n; i++) { res[i] = nums[i]; } return res; } /* 查詢陣列 nums 中數字 1 所在索引 */ int findOne(int[] nums) { for (int i = 0; i < nums.length; i++) { // 當元素 1 在陣列頭部時,達到最佳時間複雜度 O(1) 可以體現演算法在隨機輸入資料 下的執行效率,用 Θ 記號來表示。 對於部分演算法,我們可以簡單地推算出隨機資料分佈下的平均情況。比如上述示例,由於輸入陣列是被打 亂的,因此元素 1 出現在任意索引的機率都是相等的,那麼演算法的平均迴圈次數就是陣列長度的一半 ?/2 ,平均時間複雜度為 Θ(?/2) = Θ(?) 。 但對於較為複雜的演算法,計算平均時間複雜度往往比較困難,因為很難分析出在資料分佈下的整體數學期0 码力 | 379 页 | 18.79 MB | 10 月前3
JAVA 应用与开发 - 集合与映射Object get(int index) Object set(int index, Object element) int indexOf(Object o) 返回列表中首次出现指定元素的索引,如 果列表不包含指定元素,则返回 -1。 Object remove(int index) 7 28 Set � List �� java.util.Set � java.util.List Object get(int index) Object set(int index, Object element) int indexOf(Object o) 返回列表中首次出现指定元素的索引,如 果列表不包含指定元素,则返回 -1。 Object remove(int index) 7 28 Set � List �� java.util.Set � java.util.List Object get(int index) Object set(int index, Object element) int indexOf(Object o) 返回列表中首次出现指定元素的索引,如 果列表不包含指定元素,则返回 -1。 Object remove(int index) 7 28 Set � List �� java.util.Set � java.util.List0 码力 | 66 页 | 713.79 KB | 1 年前3
Java 应用与开发 - Java 内存模型与分配机制常量池 JVM 为每个已加载的类型维护一个常量池,常量池就是 这个类型用到的常量的一个有序集合。包括直接常量 (基本类型、String)和对其他类型、方法、字段的符号 引用。池中的数据和数组一样通过索引访问,常量池在 Java 程序的动态链接中起了核心作用。(Perm) 代码段 存放从硬盘上读取的源程序代码。(Perm) 数据段 存放 static 定义的静态成员。(Perm) 1注意创建出来 常量池 JVM 为每个已加载的类型维护一个常量池,常量池就是 这个类型用到的常量的一个有序集合。包括直接常量 (基本类型、String)和对其他类型、方法、字段的符号 引用。池中的数据和数组一样通过索引访问,常量池在 Java 程序的动态链接中起了核心作用。(Perm) 代码段 存放从硬盘上读取的源程序代码。(Perm) 数据段 存放 static 定义的静态成员。(Perm) 1注意创建出来 常量池 JVM 为每个已加载的类型维护一个常量池,常量池就是 这个类型用到的常量的一个有序集合。包括直接常量 (基本类型、String)和对其他类型、方法、字段的符号 引用。池中的数据和数组一样通过索引访问,常量池在 Java 程序的动态链接中起了核心作用。(Perm) 代码段 存放从硬盘上读取的源程序代码。(Perm) 数据段 存放 static 定义的静态成员。(Perm) 1注意创建出来0 码力 | 44 页 | 818.30 KB | 1 年前3
共 14 条
- 1
- 2













