首页
学习
活动
专区
工具
TVP
发布
您找到你想要的搜索结果了吗?
是的
没有找到

数据结构与算法 (Kotlin语言描述)

数据结构与算法 (Kotlin语言描述) 目录 1.Kotlin 概述 为什么用Kotlin?...Kotlin快速入门 2.数据结构与算法基础 时间复杂度 空间复杂度 递归函数 3.数组 4.栈 5.队列 6.链表 7.哈希表(映射表) 8.二叉树 9.哈夫曼树(HuffmanTree...) 10.字符串匹配与KMP算法 11.红黑树 12.排序算法(一)——冒泡排序及改进 13.排序算法(二)——选择排序及改进 14.排序算法(三)——插入排序及改进 15.排序算法(四)—...—归并排序与递归 16.排序算法(五)——快速排序 17.排序算法(六)——希尔排序 18.排序算法(七)——堆排序 19.排序算法(八)——基数排序 课程介绍 从数据结构基础到二叉树、红黑树、...哈希表,精心设计的 > 课程, 从底层到实践,构建属于自己的数据结构与算法的知识体系,完成蜕变从此课开始.

85230

算法导论系列:分治算法

,我们也引入分而治之的策略,称为分治算法,其本质其实就是将一个问题分解为若干个规模较小的相同子问题,分而治之....分治算法秘籍: 分治法解题的基本步骤如下: 1:分解问题: 将要解决的问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题 2:问题治理: 求解各个子问题,由于各个子问题和原问题的形式相同,只是规模较小...在使用分治法时,使用递归算法是解决问题的利器.下面我们用二分搜索,这个最典型的分治问题来举例,看看分治算法是如何进行工作的....解题思路: 从问题的描述来看,如果是n个数,最坏的情况我们得猜n次才可以成功,其实我们没有必要非得一个个的去猜,这显然是一个笨方法,因为这些数是有序的,我们可以按照折半查找的方式,每次和中间的元素去比较...那我们现在思路有了,可以将问题抽象描述出来: 给定n个元素,假设这些元素是有序的,从中查找特定元素x.

49820

重读算法导论算法基础

重读算法导论算法基础 ---- 插入排序 ​ 对于少量数据的一种有效算法。...比如某个算法输入的是一个图,则输入规模可能用该图中的顶点数和边数来描述更加合适。 运行时间: 指算法执行的基本操作数或步数。之所以定义成步的概念,是为了独立于机器。 ​...下面我们针对快排的代码来进行时间分析: 代码 执行耗时 执行次数 for (int j = 1; j < arr.length; j++) { c~1~ n int key = arr[j]; c~2~...在《算法导论》中使用了一个哨兵元素来判断是否已经到左右元素末尾,在上面的源码中我们直接根据下标来进行判断: ? ​ 当然这整个流程也可以用树表示如下: ? ​...,则需要将D(n)与C(n)进行相加。

884100

《数据结构与算法分析:Java语言描述》.pdf

程序=数据结构+算法 这好比是软件工程师的“武林秘籍”。 数据结构指的是数据与数据之间的逻辑关系;算法指的是解决特定问题的步骤和方法。...可以说数据结构是待处理问题的数学模型,算法则是处理问题的策略。 ? 作为软件工程师,除了要对现实问题有很好的理解与把控外,还要深谙数据结构与算法。...最近很多小伙伴问我要一些 数据结构与算法 相关的资料,于是我翻箱倒柜,找到了这本非常经典的电子书——《数据结构与算法分析:Java语言描述》。...资料介绍 《数据结构与算法分析:Java语言描述》是国外数据结构与算法分析方面的经典教材。...本书把算法分析与最有效率的Java程序的开发有机地结合起来,深入分析每种算法,内容全面、缜密严格,并细致讲解精心构造程序的方法。 ?

1.6K50

C语言算法-学习二

一个 程序 主要包括两个方面的信息: 对 数据的描述,在程序中要指定要到了哪些数据以及这些数据的类型和数据的组织形式。...这就是 数据结构(data structure) 对 操作的描述,即要求计算机进行 操作的步骤。...也就是 算法(algorithm) 一个程序除了 算法 和 数据结构 这两个要素外,还应当采用 结构化程序设计方法 进行程序设计,并用某一种 计算机语言 表示。...算法的目的是为了求解,“解”就是输出 有效性。算法中的每一个步骤都应当能有效地执行,并得到确定的结果 怎么表示一个算法 常用的方法有: 自然语言 流程图 NS图 伪代码 .........image.png 以上面的例子做N-S图 image.png 用C语言表示算法 while循环 #include int main() { int a,i; a

2.6K30

算法导论系列:贪心算法(2)

这篇文章我们将来一起看看贪心算法一个具体例子, Dijkstra算法 Dijkstra算法最著名的应用是解决单元最短路径,这是一类贪心算法,他先是求出长度最短的一条路径,然后参照这一条最短路径去求出长度次短的路径...这个算法不仅仅是贪心算法,其实也是一种特殊的动态规划,动态规划的本质是独立的子问题,而贪心每次可以求得最优的独立子问题,这两者有一些交集,但是收到很多约束,会影响适应的范围....现在我们假设景点地图如上所示,从起点到下一个点都会有具有方向路径和相应的权重,我们可以使用矩阵进行表示,如下图所示: 下图是算法的过程(用电子屏幕写字果然很不舒服): 最终的路径为: 代码如下:

80010

算法导论系列:贪心算法(1)

这系列文章主要包括几个大类的算法,包括贪心算法,分治法,动态规划,回溯法,分支定界法,线性规划法等等,具体在这些大类算法内每次会选几个小例子去加深意识,并且会给出能够运行的代码来!...正文开始: 贪心算法其实本身就跟我们人性一样,看到眼前的好吃的,拿来拿来别客气.但是丝毫不顾忌自己还得燃烧卡路里.贪心算法也是这样....贪心算法的本质其实就是总是做出当前最好的选择,也就是说算法总是期望通过局部最优选择从而得到全局最优的解决方案....下一篇文章我们将说说使用Dijkstra算法解决最短路径问题,这也是贪心算法的一种,也是挺有意思的,还请多多指教....参考资料: 1:大话数据结构,清华大学出版社 2:算法导论,机械工业出版社 3:趣学算法,人民邮电出版社 4:算法分析,人民邮电出版社

80520

编程思想 之「语言导论

[Java] Java 发展史 Java 是一门面向对象编程语言,它不仅吸收了 C++ 语言的各种优点,还摒弃了 C++ 里难以理解的多继承、指针等概念,因此 Java 语言具有功能强大和简单易用两个特征...Java 语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。...,专攻计算机在家电产品上的嵌入式应用,而这个小组的新技术成果就是 Java 语言的前身,名为 Oak 的面向对象编程语言。...虽然 Simula-67 是第一个面向对象的编程语言,但它并不成功。第一个成功面向对象的语言是 Smalltalk ,同时它也是 Java 所基于的语言之一。...如 Java 语言中的多态,导出类可以接收任何发给基类的消息。

982190
领券