算法4第一章 基础

算法定义:

    编写一段计算机程序一般都是实现一种已有的方法来解决某个问题。 这种方法大多和使用的编程语言无关--它适用于各种计算机以及编程语言。是这种方法而非计算机程序本身描述来解决问题的步骤。在计算机科学领域,我们用算法这个词来描述一种有限、确定、有效的并适合用计算机程序来实现的解决问题的方法。

    我们关注的大多数算法都需要适当地组织数据,而为了组织数据就产生了数据结构,数据结构也是计算机科学研究的核心对象,它和算法的关系非常密切。我们的观点是数据结构是算法的副产品或是结果,因此要理解算法必须学习数据结构。

 

递归:

    1、递归总有一个最简单的情况--方法的第一条语句总是一个包含return 的条件语句

    2、递归调用总是去尝试解决一个规模更小的子问题,这样递归才能收敛到最简单的情况。

    3、递归调用的父问题和尝试解决的子问题之间不应该有交集。

 

模块化编程:

   1、 程序整体的代码量很大时,每次处理的模块大小仍适中。

   2、可以共享和重用代码而无需重新实现。

   3、很容易用改进的实现替换老的实现。

   4、可以为解决编程问题简历合适的抽象模型。

   5、缩小调试范围。

 

二分查找

      

复制代码
public int binarySearch(int[] nums, int target, int begin, int end) {

        if (nums.length == 0 || begin > end) {
            return -1;
        }
        int mid = begin + (end - begin) / 2;
        if (nums[mid] == target) {
            return mid;
        } else if (nums[mid] > target) {
            return binarySearch(nums, target, begin, mid - 1);
        } else {
            return binarySearch(nums, target, mid + 1, end);
        }

    }

    public int binarySearch_1(int[] nums, int target) {
        if (nums.length == 0) {
            return -1;
        }
        int begin = 0;
        int end = nums.length - 1;

        while (begin <= end) {
            int mid = begin + (end - begin) / 2;
            if (nums[mid] == target) {
                return mid;
            } else if (nums[mid] > target) {
                end = mid - 1;
            } else {
                begin = mid + 1;
            }
        }
        return -1;
    }
复制代码

 

不成熟的优化是所有罪恶之源。

 

 

参考资料

    算法4 Robert Sedgewick

posted @   diameter  阅读(82)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示