1.学习数据结构有什么用?
2.学习算法有必要吗?
回复内容:
个人认为数据结构是编程最重要的基本功没有之一!学了顺序表和链表,你就知道,在查询操作更多的程序中,你应该用顺序表;而修改操作更多的程序中,你要使用链表;而单向链表不方便怎么办,每次都从头到尾好麻烦啊,怎么办?你这时就会想到双向链表or循环链表。
学了栈之后,你就知道,很多涉及后入先出的问题,例如函数递归就是个栈模型、Android的屏幕跳转就用到栈,很多类似的东西,你就会第一时间想到:我会用这东西来去写算法实现这个功能。
学了队列之后,你就知道,对于先入先出要排队的问题,你就要用到队列,例如多个网络下载任务,我该怎么去调度它们去获得网络资源呢?再例如操作系统的进程(or线程)调度,我该怎么去分配资源(像CPU)给多个任务呢?肯定不能全部一起拥有的,资源只有一个,那就要排队!那么怎么排队呢?用普通的队列?但是对于那些优先级高的线程怎么办?那也太共产主义了吧,这时,你就会想到了优先队列,优先队列怎么实现?用堆,然后你就有疑问了,堆是啥玩意?自己查吧,敲累了。
总之好好学数据结构就对了。我觉得数据结构就相当于:我塞牙了,那么就要用到牙签这“数据结构”,当然你用指甲也行,只不过“性能”没那么好;我要拧螺母,肯定用扳手这个“数据结构”,当然你用钳子也行,只不过也没那么好用。学习数据结构,就是为了了解以后在IT行业里搬砖需要用到什么工具,这些工具有什么利弊,应用于什么场景。以后用的过程中,你会发现这些基础的“工具”也存在着一些缺陷,你不满足于此工具,此时,你就开始自己在这些数据结构的基础上加以改造,这就叫做自定义数据结构。而且,你以后还会造出很多其他应用于实际场景的数据结构。。你用这些数据结构去造轮子,不知不觉,你成了又一个轮子哥。 简单的说,你去学Python了,到工作中,一个负载稍高一点的Python网站,你不懂数据结构,你都不知道 List 和 Dictionary 的性能曲线大概会怎么变,需要深度优化的时候怎么下手。
你才大一,不要被那些浮躁的言论骗了。好好读书,基础打好。 数据结构和算法是一部发展史,发明他们就是为了“做出东西”,学习他们是为了不重复发明轮子,当你在“做东西”时遇到运行效率上的瓶颈,就可以参考这些前人的方案,当学完后,就能评估出一个“东西”以现在的技术是否可能做出来
有人罗列xx结构、xx算法能干嘛干嘛全是屁话,书上都有。说白了这东西就是前人的公式,学习就是为了套公式解决问题的,解决世界难题就要发明新公式(算法/结构)
能否做出来包括两点:效率是否能承受,功能是否能实现
一些语言包装了大量基础算法,用于快速实现功能,一般效率也是可以接受的
当效率不能接受,就需要调整算法和结构,c甚至汇编
题主应该是想做看得见摸得着的东西,所以应该选择抽象级别高的语言。先定这“东西”干嘛用的,拆分所有要实现的细节,逐个完成,当它运作起来并快如预期,就做完了
是否有必要深入学,和你在实现过程中的效率需求有关 TokuMX™ | TokuDB® 就是“数据结构学得好”的致富榜样。 就我来说吧…我觉得大一这一年知道的最有用的一件事是:
想做自己的东西,想做自己的应用,就不要想着它眼前的用途。
就那数据结构来说,你开始可能认为这个东西看了半天写不了任何应用,没什么实际价值。可事实上,它的价值远超你任何一门程序设计语言的语法。
你可以精通10门语言,了解各种设计模式,各种框架,但是少了数据结构,你就永远走不远,像一个握有几百种民房设计图纸的建筑设计师一样,你也不可能能设计的出迪拜塔。
很多人以为本科生做两个小项目,接几个外包,做几个App,搞搞自己的博客就很厉害,其实,如果你就被这点东西迷惑,那么,你的水平也就到这里了。
工程师不是随便动动手就能当的,本科不是培训学校。 你查东西只会遍历么 学好数据结构,可以让程序跑得快一点呗。
最近和Telerik斗争良久,各种优化,各种修改它的代码,把它内部的实现开个口子,好接管其数据结构,然后提供自己的实现,那性能都蹭蹭蹭地提高。
在此还得感谢Telerik提供的劣质代码,可以有充分的空间发挥自身价值,博取老板欢心。 我认为数据结构是程序设计中的第二层。
第一层是抽象,把你想要描述的东西用程序语言抽象出来。比如说一个人,你应该用怎样的类去储存,这是第一层抽象。
数据结构的作用是,如何将数据组织起来。
为什么要将数据组织起来?因为计算机无法理解你的抽象,它不知道这个人的爸爸是他,兄弟是他,得由你程序猿来告诉它。为什么不知道,因为计算机中只有0和1,数据都是0和1,这个节点和那个节点的关系,二者如何互相得到,这是程序员要做的,数据结构教的。因为计算机不知道怎么做。
算法是什么,算法就是如何在节点与节点之间,状态与状态之间相互转移。 首先回答,学习数据结构非常有用,它是计算机从业人员一项重要的基本功。
每年计算机系毕业生那么多,如何区分精英和普通码农的一个很重要的衡量指标就是专业基本功够不够扎实。
下面对数据结构在专业上的作用,我说一下我的看法。
在某些特定的情况下,语言提供的基本数据结构(例如int,char,string …)不能满足你的使用需求,这个时候你就需要更高级的数据结构来应付这些情况。就像武功招式,你用惯了基础招式,就需要学习杀伤力更强用途更广的招式。
相当于基础武功之上的二级招式。
当你了解了这些招式,像链表,堆栈,二叉树,图等等,你就可以用更深厚的底气来面对计算机的世界,你可以知道网络里面节点的互相连接就是图的具体实例,你可以用图的最短路径算法求出实际网络上一个节点到另一个节点的最短路径,你可以知道操作系统里面海量的文件可以由B+/B-树来组织,你可以知道进程管理里面可以用优先队列(堆)调度带优先级的进程,你可以知道函数的调用就是对系统栈的操作。
简单来说,你可以加深对计算机世界的理解。
另一方面,某些数据结构在特定的环境下可以提高使用者的效率。
例如用二叉树来查找,树形结构在查找中很大的一个好处就是减免了很多不必要的查找。当你按左小右大(左半边的所有数都小于中间的数,右半边所有数都大于中间的数)的方式组织好一个数列的二叉树,你可以每次只和中间的数比较,不断缩小范围就可以找到你要找的数。如此显然比顺序查找要快的多。
当你学完数据结构,你也会顺带着对算法有了一些了解,因为数据结构和算法往往是不分家的,算法常常需要特定的数据结构支持。
例如图论的算法几乎都要图的数据结构支持。
如果说数据结构是二级招式,还是基础内功的范围,是辅助性的,那么算法就是赤裸裸的大杀器,它可以用来纯粹的提高程序的效率(这里是狭义的算法)。
当你匹配字符串的时候,把算法换成kmp,时间复杂度立刻从O(n^2)爆增到线性的O(n),那酸爽,和操作着笨重的顺序匹配,不可同日而语。
说了这么多,你也大概明白了数据结构和算法的重要性,所以我的建议是,先打好基础,一步一步慢慢来,打好下层建筑,才能垒起万丈高楼,君不见豆腐渣工程是多么害人害己。 数据结构可以帮助你在分析业务时,快速定义对象和实现算法!
别人业务给你讲清楚,你就知道能不能实现了,编码是另外的事情了!

PythonArraysSupportVariousOperations : 1) SlicingExtractsSubsets, 2) 추가/확장 어드먼트, 3) 삽입 값 삽입 ATSpecificPositions, 4) retingdeletesElements, 5) 분류/ReversingChangesOrder 및 6) ListsompectionScreateNewListSbasedOnsistin

NumpyArraysareSentialplosplicationSefficationSefficientNumericalcomputationsanddatamanipulation. Theyarcrucialindatascience, MachineLearning, Physics, Engineering 및 Financeduetotheiribility에 대한 handlarge-scaledataefficivally. forexample, Infinancialanyaly

UseanArray.ArrayOveralistInpyThonWhendealingwithhomogeneousData, Performance-CriticalCode, OrinterFacingwithCcode.1) HomogeneousData : ArraysSaveMemorywithtypepletement.2) Performance-CriticalCode : arraysofferbetterporcomanceFornumericalOperations.3) Interf

아니요, NOTALLLISTOPERATIONARESUPPORTEDBYARRARES, andVICEVERSA.1) ArraySDONOTSUPPORTDYNAMICOPERATIONSLIKEPENDORINSERTWITHUTRESIGING, WHITHIMPACTSPERFORMANCE.2) ListSDONOTEECONSTANTTIMECOMPLEXITEFORDITITICCESSLIKEARRAYSDO.

ToaccesselementsInapyThonlist, 사용 인덱싱, 부정적인 인덱싱, 슬라이스, 오리 화.

Arraysinpython, 특히 비밀 복구를위한 ArecrucialInscientificcomputing.1) theaRearedFornumericalOperations, DataAnalysis 및 MachinELearning.2) Numpy'SimplementationIncensuressuressurations thanpythonlists.3) arraysenablequick

Pyenv, Venv 및 Anaconda를 사용하여 다양한 Python 버전을 관리 할 수 있습니다. 1) PYENV를 사용하여 여러 Python 버전을 관리합니다. Pyenv를 설치하고 글로벌 및 로컬 버전을 설정하십시오. 2) VENV를 사용하여 프로젝트 종속성을 분리하기 위해 가상 환경을 만듭니다. 3) Anaconda를 사용하여 데이터 과학 프로젝트에서 Python 버전을 관리하십시오. 4) 시스템 수준의 작업을 위해 시스템 파이썬을 유지하십시오. 이러한 도구와 전략을 통해 다양한 버전의 Python을 효과적으로 관리하여 프로젝트의 원활한 실행을 보장 할 수 있습니다.

Numpyarrayshaveseveraladvantagesstandardpythonarrays : 1) thearemuchfasterduetoc 기반 간증, 2) thearemorememory-refficient, 특히 withlargedatasets 및 3) wepferoptizedformationsformationstaticaloperations, 만들기, 만들기


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

WebStorm Mac 버전
유용한 JavaScript 개발 도구
