2019-02-17 20:18:08 a13683857889 阅读数 514
  • 算法&数据结构

    您观看课程学习后 免费入群领取【超全Python资料包+17本学习电子书】 本课程从最基础的时间、空间复杂度概念入手,深入浅出的讲解常用排序、查找算法,通过本课程的学习,我们希望能帮你建立起算法思维,使你在以后的项目开发不断思考如何通过更优的算法来提高程序运行效率,且有能力写出适合你业务逻辑的算法程序。 为什么学习这个课程? 很多人觉得算法比较难,不好学,我认为原因有2个,一是相比于比较直观的逻辑代码实现,算法通常确实会更high-level,更抽象,更不易理解。 二 是因为你没遇到合适的教程,算法本身本来已经很抽象了,再用抽象的方法去讲解,当然很难学会。 本课程精心设计了每个算法讲解案例,把抽象的算法用形象生动的案例实现,使得算法小白也可以很容易理解,可以顺利带你进入算法的世界。

    3395 人正在学习 去看看 高乐

任意一种数据结构都可以用数组来表示

解决问题的效率与数据组织的方式有关,这就是为什么要学习数据结构。

考虑算法,不仅要考虑时间复杂度还要考虑空间复杂度。

 

2018-02-09 21:57:47 MendyMeng 阅读数 81
  • 算法&数据结构

    您观看课程学习后 免费入群领取【超全Python资料包+17本学习电子书】 本课程从最基础的时间、空间复杂度概念入手,深入浅出的讲解常用排序、查找算法,通过本课程的学习,我们希望能帮你建立起算法思维,使你在以后的项目开发不断思考如何通过更优的算法来提高程序运行效率,且有能力写出适合你业务逻辑的算法程序。 为什么学习这个课程? 很多人觉得算法比较难,不好学,我认为原因有2个,一是相比于比较直观的逻辑代码实现,算法通常确实会更high-level,更抽象,更不易理解。 二 是因为你没遇到合适的教程,算法本身本来已经很抽象了,再用抽象的方法去讲解,当然很难学会。 本课程精心设计了每个算法讲解案例,把抽象的算法用形象生动的案例实现,使得算法小白也可以很容易理解,可以顺利带你进入算法的世界。

    3395 人正在学习 去看看 高乐

在已经在学校学习过数据结构一遍只是为了应试,现在发现数据结构真的猴重要,这是自己学习过程的记录

这个是学习过程的心得记录

1.在每次写一种基本数据结构之前,要想到这种结构的结构定义的参数需求,以及结构操作都会有那些的可能性操作,我觉得这样大大的帮助了后面编程的可行性。

2.结构定义:维数,参数。

3.结构操作:增删改查

增:位置的合法性。空间的合法性。内容的合法性。

删:位置的合法性。删除之后的原数据处理,剩余数据的处理

改:位置的合法性。内容的合法性。

查:位置的合法性。

2019-01-20 22:35:01 zhanglinlove 阅读数 32
  • 算法&数据结构

    您观看课程学习后 免费入群领取【超全Python资料包+17本学习电子书】 本课程从最基础的时间、空间复杂度概念入手,深入浅出的讲解常用排序、查找算法,通过本课程的学习,我们希望能帮你建立起算法思维,使你在以后的项目开发不断思考如何通过更优的算法来提高程序运行效率,且有能力写出适合你业务逻辑的算法程序。 为什么学习这个课程? 很多人觉得算法比较难,不好学,我认为原因有2个,一是相比于比较直观的逻辑代码实现,算法通常确实会更high-level,更抽象,更不易理解。 二 是因为你没遇到合适的教程,算法本身本来已经很抽象了,再用抽象的方法去讲解,当然很难学会。 本课程精心设计了每个算法讲解案例,把抽象的算法用形象生动的案例实现,使得算法小白也可以很容易理解,可以顺利带你进入算法的世界。

    3395 人正在学习 去看看 高乐

数据结构:数据存放的方式,对数据的查询、插入、删除等操作就是算法。
算法的必要条件:输入、输出、有穷性、确切性、可行性
算法的好坏判断标准:空间复杂度S(n) 和时间复杂度T(n)
空间复杂度: 运行程序存储变量的空间长度
时间复杂度: 运行程序花费的时间长度

最大子列和算法:
1、暴力求解
public int maxLen(int[] num) {
int ans = num[1];
for(int i = 1; i <= N; i++) {
for(int j = i; j <= N; j++) {
int s = 0;
for(int k = i; k <= j; k++) {
s += num[k];
}
if(s > ans) ans = s;
}
}
return ans;
}

时间复杂度是O(N3)

2、简单优化,去掉一个循环
public int maxLen(int[] num) {
sum[0] = 0;
for(int i = 1; i <= N; i++) {
sum[i] = num[i] + sum[i - 1];
}
int ans = num[1];
for(int i = 1; i <= N; i++) {
for(int j = i; j <= N; j++) {
int s = sum[j] - sum[i - 1];
if(s > ans) ans = s;
}
}

}

时间复杂度是O(N2)

3、通过逻辑方面来改进
int MaxSubseqSum4( int A[], int N )
{ int ThisSum, MaxSum;
int i;
ThisSum = MaxSum = 0;
for( i = 0; i < N; i++ ) {
ThisSum += A[i]; /* 向右累加 /
if( ThisSum > MaxSum )
MaxSum = ThisSum; /
发现更大和则更新当前结果 /
else if( ThisSum < 0 ) /
如果当前子列和为负 /
ThisSum = 0; /
则不可能使后面的部分和增大,抛弃之 */
}
return MaxSum;
}

时间复杂度是O(N);空间复杂度是1

4、用分治思想实现
public static int split(int[] arr, int left, int right) {
if (left == right)
return arr[left];
int mid = (left + right) >> 1;
int lvalue = split(arr, left, mid);
int rvalue = split(arr, mid + 1, right);

	int sum = 0;
	int lmax = arr[mid];
	for (int i = mid; i >= left; i--) {
		sum += arr[i];
		if (sum > lmax) lmax = sum;
	}
	sum = 0;
	int rmax = arr[mid + 1];
	for (int i = mid + 1; i < right; i++) {
		sum += arr[i];
		if (sum > rmax) rmax = sum;
	}
	int an = lmax + rmax;
	if (lvalue > an) an = lvalue;
	if (rvalue > an) an = rvalue;
	return an;
}

待续
时间复杂度是O(Nlogn);空间复杂度是logn

2019-11-01 20:20:50 Andrewwhite 阅读数 17
  • 算法&数据结构

    您观看课程学习后 免费入群领取【超全Python资料包+17本学习电子书】 本课程从最基础的时间、空间复杂度概念入手,深入浅出的讲解常用排序、查找算法,通过本课程的学习,我们希望能帮你建立起算法思维,使你在以后的项目开发不断思考如何通过更优的算法来提高程序运行效率,且有能力写出适合你业务逻辑的算法程序。 为什么学习这个课程? 很多人觉得算法比较难,不好学,我认为原因有2个,一是相比于比较直观的逻辑代码实现,算法通常确实会更high-level,更抽象,更不易理解。 二 是因为你没遇到合适的教程,算法本身本来已经很抽象了,再用抽象的方法去讲解,当然很难学会。 本课程精心设计了每个算法讲解案例,把抽象的算法用形象生动的案例实现,使得算法小白也可以很容易理解,可以顺利带你进入算法的世界。

    3395 人正在学习 去看看 高乐

1.什么是数据结构与算法
广义上:数据结构就是一组数据的储存结构,算法就是操作数据的一组方法。
狭义上:某些著名的数据结构和算法,例如栈,队列,链表,二分查找,动态规划等,都是前人的智慧结晶,可以直接拿来用。

2.数据结构和算法的关系
数据结构是为算法服务的,算法又必须作用在特定的数据结构之上,两者无法孤立来讲。

3.学习的重点
3.1复杂度分析
时间复杂度(效率)和空间复杂度(资源消耗)。
3.2常用的数据结构和算法
10个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie树
10个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法
3.3注意事项
学习过程中,不要死记硬背各种数据结构和算法,而是要学习它的“来历”“自身的特点”“适合解决的问题”和“实际的应用场景”。

4.学习技巧
4.1边学边练,适度刷题
每周花时间集中把所学内容涉及的数据结构和算法,自己全部写出来,用代码实现一遍。
4.2多问,多思考,多互动
学习最好的方法是,找到几个人一起学习,一块切磋讨论,有问题及时寻求老师答疑。
多看看专栏里别的大佬的留言和总结,从中吸取经验。
4.3打怪升级学习法
对于学习过程中,总是坚持不下来这个问题,可以给自己定一个切实可行的目标,例如每次课后写一篇总结,认真思考每节课的课后思考。
4.4知识需要沉淀,不要想试图一下子掌握所有
学习知识的过程是反复迭代、不断沉淀的过程,要时常对自己的所学知识进行巩固。

2015-12-08 21:38:49 zpj779878443 阅读数 182259
  • 算法&数据结构

    您观看课程学习后 免费入群领取【超全Python资料包+17本学习电子书】 本课程从最基础的时间、空间复杂度概念入手,深入浅出的讲解常用排序、查找算法,通过本课程的学习,我们希望能帮你建立起算法思维,使你在以后的项目开发不断思考如何通过更优的算法来提高程序运行效率,且有能力写出适合你业务逻辑的算法程序。 为什么学习这个课程? 很多人觉得算法比较难,不好学,我认为原因有2个,一是相比于比较直观的逻辑代码实现,算法通常确实会更high-level,更抽象,更不易理解。 二 是因为你没遇到合适的教程,算法本身本来已经很抽象了,再用抽象的方法去讲解,当然很难学会。 本课程精心设计了每个算法讲解案例,把抽象的算法用形象生动的案例实现,使得算法小白也可以很容易理解,可以顺利带你进入算法的世界。

    3395 人正在学习 去看看 高乐

小猪的数据结构辅助教程——1.数据结构与算法绪论

标签(空格分隔): 数据结构


本节学习路线图与学习要点

学习要点:

  • 1.了解数据结构的相关概念
  • 2.了解算法的相关概念
  • 3.熟悉时间复杂度的计算
  • 4.了解空间复杂度的概念,闰年表空间换时间的例子~

1.什么是数据结构?


2.算法的叙述

3.时间复杂度计算的简单示例

数据结构预算法——时间复杂度分析实例

没有更多推荐了,返回首页